前言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 appiumQQ群:330467341 2019年《python3自动化UI+接口》课程5月25-7月27开课 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学 上课时间:每周六、周日晚上20:30-22:30 报名费:2000
|