news 2026/2/8 5:06:03

Appium混合页面点击方法tap的使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 '切换成功'

最后作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些软件测试的学习资料和我花了3个月整理的软件测试自学全栈,这些资料希望能给你前进的路上带来帮助。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/4 20:58:29

Dubbo 面试必问:默认序列化框架及你知道的选择!

文章目录 默认使用什么序列化框架,你知道的还有哪些?引言第一部分:什么是序列化?第二部分:Dubbo 的默认序列化框架——Hessian1. 为什么选择 Hessian?2. Hessian 的配置 第三部分:你知道的还有哪…

作者头像 李华
网站建设 2026/2/7 16:39:49

中小微企业做企业微信社群有必要买AI SCRM吗?最新实践总结

一、2025年中小微企业社群运营的三个现实困境2025年,企业微信已连接超1400万真实企业与7.5亿微信用户,成为中小微企业私域运营的核心阵地。但看社群运营背后藏着三个难以忽视的痛点,制约着企业的运营效率与发展潜力。其一,人力成本…

作者头像 李华
网站建设 2026/2/7 7:16:41

【JavaWeb】乱码问题_响应乱码问题

问题 创建servlet,向客户端响应文字 在tomcat10中,响应体默认的编码字符集使用的是UTF-8 但是,客户端在收到响应体的时候,此时不知道用UTF-8进行解码,会结合系统的语言环境使用GBK进行解码操作 于是就乱码了 解决 可…

作者头像 李华
网站建设 2026/2/2 12:10:10

Java面试精讲:跨境物流场景下的JVM、Git与Jakarta EE深度剖析

Java面试精讲:跨境物流场景下的JVM、Git与Jakarta EE深度剖析 📋 面试背景 欢迎来到“宇宙大厂”的Java高级开发工程师面试现场。今天,我们要面试的候选人是“小润龙”,一位在技术路上充满激情但偶尔也会“跑偏”的程序员。面试官…

作者头像 李华
网站建设 2026/2/5 17:37:47

室友分享的7个降AI工具,论文ai率从80%降低到13%!

市场上的降AI率工具良莠不齐,如何科学判断降AI率效果是很多学生、老师最关心的问题,担心降不来AI率,耽误时间还花不少钱。 本文将从以下五个维度系统,分析2025年主流的8个降AI工具,教大家如何选择适合自己的降AIGC工具…

作者头像 李华
网站建设 2026/2/8 9:11:18

降ai率太贵了?嘎嘎降免费1000字降AI,去aigc痕迹嘎嘎快!

市场上的降AI率工具良莠不齐,如何科学判断降AI率效果是很多学生、老师最关心的问题,担心降不来AI率,耽误时间还花不少钱。 本文将从以下五个维度系统,分析2025年主流的8个降AI工具,教大家如何选择适合自己的降AIGC工具…

作者头像 李华