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
appium+python自动化62-webview元素click失效问题解决的更多相关文章
- Appium+python自动化-查看app元素属性
本文转自:https://www.cnblogs.com/yoyoketang/p/7581831.html 前言 学UI自动化首先就是定位页面元素,玩过android版的appium小伙伴应该都知道 ...
- appium+python自动化34-获取元素属性get_attribute
获取text # coding:utf-8 from appium import webdriver from time import sleep desired_caps = { 'platform ...
- Appium+python自动化3-定位元素
3.1常用定位方法讲解 对象定位是自动化测试中很关键的一步,也可以说是最关键的一步,毕竟你对象都没定位那么你想操作也不行.所以本章节的知识我希望大家多动手去操作,不要仅仅只是书本上的知识,毕竟这个我只 ...
- appium+python自动化:获取元素属性get_attribute
使用get_attribute()获取元素属性,括号里应该填写什么? 查看appium源码 如果是获取resource-id,填写resourceId self.driver.find_element ...
- Appium+Python自动化 2 定位元素方式
1.找到 Android SDK安装路径tools 下面的 uiautomatorviewer.bat,如下截图 2.点击uiautomatorviewer.bat进行启动,左上角一共四个按钮,作用分 ...
- selenium+python自动化99-清空输入框clear()失效问题解决
前言 在使用selenium做UI自动化的时候,发现有些弹出窗上的输入框,输入文本后,使用clear()方法无效. 这样会导致再次输入时,字符串不是清空后输入,而是跟着后面输入一长串,导致结果不准. ...
- appium+python自动化63-使用Uiautomator2报错问题解决
前言 appium desktop V1.7.1版本使用命令行版本启动appium后,使用Uiautomator2定位toast信息报错:appium-uiautomator2-server-v0.3 ...
- Appium+python自动化
名称 链接地址 Appium+python自动化8-Appium Python API(上) http://mp.weixin.qq.com/s/WvpT5oRrYY22avI95FuypQ Appi ...
- Appium+python自动化20-查看iOS上app元素属性
前言 学UI自动化首先就是定位页面元素,玩过android版的appium小伙伴应该都知道,appium的windows版自带的Inspector可以定位app上的元素 Mac版的appium1.6的 ...
随机推荐
- react 常用组件整理
0.es6语法糖 deptList = deptnameList.filter(item => item.rel ===this.state.thUser.orgId);//返回一个新的数组对象 ...
- Linux——xargs命令学习
有时候我们会遇到需要将指定命令返回结果进行处理的情况 这种情况下,可能就需要写for循环之类的脚本进行处理了(目前我只能想到这种方法) 但是想起来还有一个xargs命令,组合这个命令就比较省事了. 场 ...
- Vue组件注册与数据传递
父子组件创建流程 1.构建父子组件 1.1 全局注册 (1)构建注册子组件 //构建子组件child var child = Vue.extend({ template: '<div>这是 ...
- IBM X3650 M4 M5 设置服务器用UEFI模式启动支持磁盘GPT分区
1 系统启动 2 按 F1 3 进入BIOS 4 进入 System Configuration 5 找到 Boot Manager 6 找到Boot Modes 7 进入Boot Modes, 找到 ...
- 【Spring Boot学习之三】Spring Boot整合数据源
环境 eclipse 4.7 jdk 1.8 Spring Boot 1.5.2 一.Spring Boot整合Spring JDBC 1.pom.xml <project xmlns=&quo ...
- 【视频开发】Gstreamer中一些gst-launch常用命令
GStreamer是著名的开源多媒体框架,功能强大,其命令行程序 gst-launch 可以实现很多常规测试.播放等,作为系统调试等是非常方便的. 1.摄像头测试 gst-launch v4l2src ...
- linux设置root密码&进入不了root
刚装的linux无法使用root需要初始化密码 1.设置密码 sudo passwd root 点击回车,然后输入两次你想设置的密码,比如123456 2.切换用户 su root 再输入你刚才设置的 ...
- 【C++】继承和组合的概念?什么时候用继承?什么时候用组合?
继承:通过扩展已有的类来获得新功能的代码重用方法 组合:新类由现有类的对象合并而成的类的构造方式 何时用继承?何时用组合? 1.如果二者间存在一个"是"的关系,并且一个类要对另外一 ...
- 数据采集,SCADA, 使用MQTT的方式来进行消息单/双向传输,什么场景使用MQTT
1.先来了解下: 看完得出关键字:发布.订阅模式,事件驱动,主题,生产与消费解耦 2.轻量级 普通的socket连接对服务器的消耗太大了,socket服务端是很消耗资源的,一台服务器能链接的客户端是有 ...
- kie-api介绍和使用
参考:KIE kie在drools jbpm uberfire里广泛被使用,下面对kie-api中的几个重要组件做下简单介绍 maven依赖 <dependency> <groupI ...