android appium 页面如何跳转,【appium实战】appium混合页面点击方法tap的使用
原标题:【appium实战】appium混合页面点击方法tap的使用
新书
速递
文 | 夜鸣猪
原生应用开发,是在Android、IOS等移动平台上利用官方提供的开发语言、开发类库、开发工具进行App开发;HTML5(h5)应用开发,是利用Web技术进行的App开发。目前,市面上很多app都是原生和h5混合开发,这样做的好处在于:
1)开发效率高,节约时间同一套代码Android和IOS基本都可用。
2)更新和部署比较方便,不需要每次升级都要上传到App Store进行审核了,只需要在服务器端升级就可以。
3)代码维护方便、版本更新快,降低产品成本。(以上内容引用自百度)
使用appium对混和开发的app做自动化时,会碰到不少坑。最近在用appium操作app中h5页面时,碰到一个问题:已经切换到webview中并且定位到了元素,用click方法点击元素怎么都不起作用。这时候查看appium日志如图1,发现click方法已经执行了,但是手机上并没有执行这个动作。我以前用click方法是可以点击已定位的webview元素的,所以我找前端研发工程问了一下,找到了原因:在手机端用js操作H5页面时,click会有200-300ms延时,后面写的页面很多都采用封装好的tap来进行点击,这种情况下用click就不起作用。
图 1
接下来我想到用原生中tap方法,先获取元素范围内坐标,再进行tap点击,代码如图2。结果在切到webview获取到元素中心坐标,使用tap方法时报错,因为webview中无法使用原生的tap方法。
图 2
于是我在webview中定位好元素后切回原生后使用tap方法,但这个时候又碰到一个问题:由于web页面坐标系与手机原生坐标系不一致,同一个元素在webview中的坐标与在原生页面中的坐标不一致,切出webview后tap依然点击不到,这条路暂时也行不通了。
我想起appium中的webdriver是继承自selenium,但是手势操作会不会有不同呢,抱着试一试的心态查看了一下appium中的手势操作类TouchAction,发现几行注释如图2,
图 3
原来原生中的tap方法是appium作者为了适应selenium而写的,于是我找到selenium中的TouchActions类,发现也有tap方法如图 3。注:
图 4
该方法中只有element参数,没有坐标参数,参数为坐标时无法点击。
尝试着用selenium下的tap方法,成功实现,伪代码如下:
element = getElement(driver,locationType,locatorExpression)
#该方法为我自己封装的获取element方法,读者只需根据正常方法获取到元素即可。
tas = TouchActions(driver)
#实例化一个TouchActions对象tas.tap(element)
本来以为此问题已经解决,不料在运行第二次时,该方法也失效了,查看touch_actions中的代码如图5发现,手势操作需要用perform再执行一下,把action提交才会起作用,问题解决。
图 5
附上源代码:
from selenium.webdriver.common.touch_actions import TouchActions
def tap_element(locationType, locatorExpression):
try:
element = getElement(driver, locationType=locationType, locatorExpression=locatorExpression) #element可根据自己的方式获取
tas = TouchActions(driver)
tas.tap(element).perform()
except Exception, e:
raise e
if __name__=='__main__':
launchApp_smy_noReset() #启动app,此方法自己封装
sleep(10) #留足够时间点击到调试页,也可用程序跳转到h5页面
switch_to_webview() #切换到webview
tap_element('xpath','//*[@id="detail"]/div[4]/a[2]')
#调用刚封装好的tap_element方法
print '点击成功'
switch_to_native() #切换到原生
print '切换成功'
责任编辑:
android appium 页面如何跳转,【appium实战】appium混合页面点击方法tap的使用相关推荐
- 微信公众号页面如何跳转至关注公众号页面
微信公众号页面如何跳转至关注公众号页面 1.获取微信公众号biz字段 a.点击公众号 历史文章,在浏览器中打开 b.鼠标右键,查看网页源代码 c.复制红框的字段 即为biz字段 2.拼接biz字段成完 ...
- (仿360卸载后弹窗)Android卸载程序之后跳转到指定的反馈页面
想起360被卸载之后会跳转到指定的反馈页面,是怎么弄的?就百度了一下,果然网上似乎有相关的问题的解答,这里就将他们的步骤在细化一下了: 其实这个问题的核心就在于:应用被卸载了,如果能够做到后续的代码逻 ...
- 抖音内打开的h5页面,跳转到抖音商户页面方法记录。
目录 需求说明: 研究分析: 问题解决: 如何获取用户id: 需求说明: 最近在开发抖音内嵌H5页面,需要上传抖音视频,其实上传主要是通过后端封装抖音提供的openapi接口来实现. 但是产品突然提了 ...
- android finish动画,Android 关于Activity的跳转和finish时切换页面动画实现
今天沈阳斌子在做APP时,客户的需求变更是在原有的程序上加入跳转页面的动画切换,类似IPhone的左出右进的方式,返回时是相反的效果.我知道用两种方式可以实现这样的效果,一种就是通过在startAct ...
- 史上最全 Appium 自动化测试从入门到框架实战精华学习笔记(二)
本系列文章汇总了从 Appium 自动化测试从基础到框架高级实战中,所涉及到的方方面面的知识点精华内容(如下所示),希望对大家快速总结和复习有所帮助. Appium 自动化测试从基础到框架实战 App ...
- 史上最全 Appium 自动化测试从基础到框架实战精华学习笔记(一)
本文为霍格沃兹测试学院学员学习笔记,进阶学习文末加群. 对测试人来说,Appium 是非常重要的一个开源跨平台自动化测试工具,它允许测试人员在不同的平台(iOS.Android 等)使用同一套 API ...
- appium+python闲鱼采购自动化实战(二)
appium+python闲鱼采购自动化实战(二) appium+python闲鱼采购自动化实战 appium+python闲鱼采购自动化实战(二) 三.环境搭建 2.android-sdk安装和设置 ...
- Spark Core项目实战(3) | 页面单跳转化率统计
大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...
- MarkDown页面添加锚点,跳转到本页指定位置
MarkDown页面添加锚点,跳转到本页指定位置 目录 MarkDown页面内跳转测试 MarkDown页面内跳转语法 ---------------------------------------- ...
最新文章
- Linux下USB suspend/resume源码分析【转】
- 思科系统公司以IP网络为中心的视频监视系统
- NGUI减少Drawcall
- php一篇文零基础到制作在线图片编辑网站赚钱(gif压缩、九宫格裁剪、等比裁剪、大小变换)【php华为云实战】
- html网页如何获取后台数据库的数据(html + ajax + php + mysql)
- 看完这篇不要告诉我不会封装ant design弹框组件了
- MapReduce高级编程
- 我的docker随笔24:docker产生coredump文件
- postgres数据库常见报错
- 【优化调度】基于matlab改进的遗传算法求解风电场优化调度问题【含Matlab源码 1245期】
- http接口开发与调用案例
- TextView常用属性设置
- 【小飞兔整站下载】整站下载器哪个好用_整站下载工具哪个好
- 浩海技术激活工具可激活Windows10系统和office
- android 菜鸟面单打印_Android开发的菜鸟小记
- 物联网开发 无线433MHz安防报警系统 上
- 富有哲理的10则故事(必读经典)
- 工业大数据竞赛的轴承数据集
- 「面试」缓存知识点大总结
- 想要进行gene prioritization分析,请看这里!