appium+python自动化62-webview元素click失效问题解决

前言

Appium 在切换到 webview 后,正肯定位到元素,可是click () 事件后界面无响应,脚本运行正常不会报错。
主要缘由是:混合APP 时监听全用的是tap事件,不是click事件html

遇到问题

在使用appium,切换到webview后,点击webview里面的某个标签,已经定位到元素了web

webview切换成功,而且已经定位到里面的‘酒店问题’这个元素app

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模式时候有提到过http://www.javashuo.com/article/p-anydydxk-hy.htmlcode

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方法操做元素orm

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 http://www.javashuo.com/article/p-asrketnp-mt.htmlhtm

appiumQQ群:330467341blog

相关文章
相关标签/搜索