appium+python自動化62-webview元素click失效問題解決


前言

Appium 在切換到 webview 后,正確定位到元素,但是click () 事件后界面無響應,腳本運行正常不會報錯。
主要原因是:混合APP 時監聽全用的是tap事件,不是click事件

遇到問題

在使用appium,切換到webview后,點擊webview里面的某個標簽,已經定位到元素了

webview切換成功,並且已經定位到里面的‘酒店問題’這個元素

driver.switch_to.context("WEBVIEW_com.yipiao") print(driver.current_context) time.sleep(3) # click無效 driver.find_element_by_xpath('//*[text()="酒店問題"]').click() 

TouchAction里面tap事件

這個問題主要原因是開發寫的webview界面的元素監聽的是tap事件,不是click事件。selenium里面有個TouchActions類,可以操作tap事件,
之前在寫淘寶的wap模式時候有提到過https://www.cnblogs.com/yoyoketang/p/7942275.html

from selenium.webdriver.common.touch_actions import TouchActions

class TouchAction(object): def __init__(self, driver=None): self._driver = driver self._actions = [] def tap(self, element=None, x=None, y=None, count=1): 模擬手指觸摸屏 def press(self, el=None, x=None, y=None): 短按:模擬手指按住一個元素,或者坐標 def long_press(self, el=None, x=None, y=None, duration=1000): 長按:模擬按住一個元素,或者坐標 def wait(self, ms=0): 按住元素后的等待時間 def move_to(self, el=None, x=None, y=None): 移動手指到另外一個元素,或者坐標,注意這里坐標不是絕對坐標,是偏移量 def release(self): 釋放手指 def perform(self):

解決辦法:先定位到元素后,用tap方法操作元素

driver.switch_to.context("WEBVIEW_com.yipiao") print(driver.current_context) # click無效 # driver.find_element_by_xpath('//*[text()="酒店問題"]').click() # 解決辦法 from selenium.webdriver.common.touch_actions import TouchActions el = driver.find_element_by_xpath('//*[text()="酒店問題"]') TouchActions(driver).tap(el).perform() 

注意:這里是selenium里面的TouchActions
不是appium里面的TouchAction https://www.cnblogs.com/yoyoketang/p/7852161.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM