打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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

appiumQQ群:330467341

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Appium自动化测试实现九宫格解锁
Python Appium开启Android测试之路
python--appium手势密码
Selenium3源码之common下action_chains.py模块分析
聊聊 Python 做微信小程序自动化,那些踩过的坑?
(4)Android手机自动化测试实例详解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服