news 2026/4/15 15:48:15

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/4/14 23:22:30

基于HT单片机智能垃圾桶的设计与实现

基于HT单片机的智能垃圾桶设计与实现 第一章 系统概述 传统垃圾桶需手动开盖,在厨房、卫生间等场景中易造成手部接触污染,且难以直观判断垃圾满溢状态,频繁开盖还可能导致异味扩散。基于HT单片机的智能垃圾桶,以高性价比、低功耗的…

作者头像 李华
网站建设 2026/4/15 15:15:56

拼多多API赋能,新农人也能玩转电商大舞台!

在数字化农业浪潮中,拼多多开放平台API正成为新农人撬动电商市场的技术杠杆。本文将深入解析如何通过API实现农产品上架、订单管理、营销活动等核心功能,并附完整代码示例。一、API接入基础开发者注册访问拼多多开放平台,完成企业资质认证&am…

作者头像 李华
网站建设 2026/4/16 9:02:36

2025最新汇总7款降ai率工具,轻松通过AIGC检测!

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

作者头像 李华
网站建设 2026/4/15 15:12:08

还在为论文重复率高发愁?8款AI改重降重工具,一键替换高级表达!

还在手动逐字逐句“调换语序”、“替换近义词”来降重?还在为改到面目全非却依然标红而彻夜难眠?还在担心AI生成的论文“一眼假”,过不了AIGC检测,导致学术不端的风险? 如果你的答案是肯定的,那么请立刻停…

作者头像 李华
网站建设 2026/4/15 8:09:13

Delphi凭什么挑战Excel VBA?背后深意很多人没看懂

说 Delphi 死了的人,大多没真正用过它。而说 Excel VBA 万能的人,基本都还没被业务折磨够。就在我上一篇写 Python 和 VBA 的文章下面,有读者突然冒出一句话:delphi7 才是Excel编程神器。相信这句话戳中了不少老程序员用过delphi的…

作者头像 李华