原标题:【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. 微信公众号页面如何跳转至关注公众号页面

    微信公众号页面如何跳转至关注公众号页面 1.获取微信公众号biz字段 a.点击公众号 历史文章,在浏览器中打开 b.鼠标右键,查看网页源代码 c.复制红框的字段 即为biz字段 2.拼接biz字段成完 ...

  2. (仿360卸载后弹窗)Android卸载程序之后跳转到指定的反馈页面

    想起360被卸载之后会跳转到指定的反馈页面,是怎么弄的?就百度了一下,果然网上似乎有相关的问题的解答,这里就将他们的步骤在细化一下了: 其实这个问题的核心就在于:应用被卸载了,如果能够做到后续的代码逻 ...

  3. 抖音内打开的h5页面,跳转到抖音商户页面方法记录。

    目录 需求说明: 研究分析: 问题解决: 如何获取用户id: 需求说明: 最近在开发抖音内嵌H5页面,需要上传抖音视频,其实上传主要是通过后端封装抖音提供的openapi接口来实现. 但是产品突然提了 ...

  4. android finish动画,Android 关于Activity的跳转和finish时切换页面动画实现

    今天沈阳斌子在做APP时,客户的需求变更是在原有的程序上加入跳转页面的动画切换,类似IPhone的左出右进的方式,返回时是相反的效果.我知道用两种方式可以实现这样的效果,一种就是通过在startAct ...

  5. 史上最全 Appium 自动化测试从入门到框架实战精华学习笔记(二)

    本系列文章汇总了从 Appium 自动化测试从基础到框架高级实战中,所涉及到的方方面面的知识点精华内容(如下所示),希望对大家快速总结和复习有所帮助. Appium 自动化测试从基础到框架实战 App ...

  6. 史上最全 Appium 自动化测试从基础到框架实战精华学习笔记(一)

    本文为霍格沃兹测试学院学员学习笔记,进阶学习文末加群. 对测试人来说,Appium 是非常重要的一个开源跨平台自动化测试工具,它允许测试人员在不同的平台(iOS.Android 等)使用同一套 API ...

  7. appium+python闲鱼采购自动化实战(二)

    appium+python闲鱼采购自动化实战(二) appium+python闲鱼采购自动化实战 appium+python闲鱼采购自动化实战(二) 三.环境搭建 2.android-sdk安装和设置 ...

  8. Spark Core项目实战(3) | 页面单跳转化率统计

      大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...

  9. MarkDown页面添加锚点,跳转到本页指定位置

    MarkDown页面添加锚点,跳转到本页指定位置 目录 MarkDown页面内跳转测试 MarkDown页面内跳转语法 ---------------------------------------- ...

最新文章

  1. Linux下USB suspend/resume源码分析【转】
  2. 思科系统公司以IP网络为中心的视频监视系统
  3. NGUI减少Drawcall
  4. php一篇文零基础到制作在线图片编辑网站赚钱(gif压缩、九宫格裁剪、等比裁剪、大小变换)【php华为云实战】
  5. html网页如何获取后台数据库的数据(html + ajax + php + mysql)
  6. 看完这篇不要告诉我不会封装ant design弹框组件了
  7. MapReduce高级编程
  8. 我的docker随笔24:docker产生coredump文件
  9. postgres数据库常见报错
  10. 【优化调度】基于matlab改进的遗传算法求解风电场优化调度问题【含Matlab源码 1245期】
  11. http接口开发与调用案例
  12. TextView常用属性设置
  13. 【小飞兔整站下载】整站下载器哪个好用_整站下载工具哪个好
  14. 浩海技术激活工具可激活Windows10系统和office
  15. android 菜鸟面单打印_Android开发的菜鸟小记
  16. 物联网开发 无线433MHz安防报警系统 上
  17. 富有哲理的10则故事(必读经典)
  18. 工业大数据竞赛的轴承数据集
  19. 「面试」缓存知识点大总结
  20. 想要进行gene prioritization分析,请看这里!

热门文章

  1. HTTP隧道代理及wireshark抓包分析HTTPS过程
  2. 程序员到高级架构师,必须经历的三个阶段
  3. pycharm安装第三方库速度慢解决方法
  4. 申万一级行业日指数_申万一级行业指数
  5. Centos查看IP地址
  6. python与c 哪个好_python和c语言哪个好
  7. 最新软考知识点总结(备考笔记)
  8. Juniper BGP选路原则
  9. 高中数学与计算机,高中数学在计算机中的运用及思考.docx
  10. 01 【打新债】打新可转债