🎉 🎂 🍰 TesterHome 创立 9 周年纪念日 🍰 🎂 🎉

问答 小程序 UI 自动化问题求助!!!

Jason丨玖卿 · 2021年06月23日 · 最后由 胡适 回复于 2021年08月03日 · 1851 次阅读

使用的 Appium + python

小程序名称:【扳手会】

无法找到小程序 tabBar(底部导航栏)的元素,导致无法切换,所有 context、handle 都循环切换过、试过了,还是找不到。
用 chrome://inspect 工具打开小程序页面 也是不显示这个导航栏,只显示导航栏上面的页面,不知道是小程序本身的问题还是其他原因导致的。
page_source 也只能看到导航栏【首页】里的页面元素。

最开始小程序进程为 'com.tencent.mm:toolsmp' 时,设置【androidProcess】为 'com.tencent.mm:toolsmp' ,是可以找到元素 "我的" 进行点击,所以我写的元素路径定位应该是没问题的。

后来小程序进程就变成了 'com.tencent.mm:appbrand0' ,无论【androidProcess】设置 为 'com.tencent.mm:appbrand0' 还是 'com.tencent.mm:toolsmp'
都无法找到元素 "我的"。

大致问题和这两个类似:
https://testerhome.com/topics/21028
https://www.zhihu.com/question/429987327/answer/1649570913

在手机上正常是这样显示的,可以看到底部导航栏:

在 chrome://inspect/#devices 就这样显示了,不知道是不是这个原因导致找不到底部导航栏元素路径:

共收到 29 条回复 时间 点赞

如果特指微信小程序,要开调试模式,自己搜下
其他小程序,目前貌似没有办法

pyhton 的话建议尝试使用 UIautomator2,我最近再用这个操作小程序,感觉使用起来比 appium 舒服,我是放弃了 appium 转到 uiautomator2 中来的,项目变得顺利很多

洋葱 回复

调试模式开启了

Dawson 回复

UIautomator2 不用切换 context、handle 来寻找页面元素吗?

目前通过点击坐标的方式能点击成功,但这是下下策。
点击坐标对应的 tabBar 后能获取到对应 tabBar 页面的页面元素

Jason丨玖卿 回复

这要看具体的情况了,你这种可能直接通过 text 就可以直接定位到了,我刚刚看了一下,d(resourceId="com.tencent.mm:id/rd",text="首页") 或者 d.xpath('//*[@resource-id="com.tencent.mm:id/pk"]/android.widget.LinearLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.ImageView[1]') 这两种方式 UIautomator2 都可以进行定位,前者是文本,后者是图标

已经打开对应窗口,窗口图标是唯一的情况下,不一定非得使用句柄或者 context 之类的,也可以使用截图定位位置。具体的 java 可以使用 sikuli,python 可以使用 airtest 等,本人试过,图标唯一,截图清晰的话准确率还是有保障的

牧歌 回复

这个看过,不是驱动的问题

Dawson 回复

Appium 的底层就是包含 UIautomator2,按理说应该没有太大的区别,在 Appium 中使用 UIautomator2 的引擎。
你能定位到【我的】这个元素吗

derchLee 回复

airtest 还需要另一个 IDE,我目前需要把 WEB 自动化 + 小程序自动化 串起来,所以在同一个 IDE 比较好

derchLee 回复

你是从哪个入口进入的小程序

可以使用 Minium 这个框架,是微信开发用来做小程序自动化的,https://minitest.weixin.qq.com/#/官方文档

leo.zhang 回复

我目前需要把 WEB 自动化 + 小程序自动化 串起来,Minium 只支持手机端的,还得另外搞一个框架,应该没法穿起来吧

微信小程序的话好像微信有一个框架 叫 minium 可以去看看

我之前也遇到过,不过我用的不是这套框架,小程序这里好像是调用了原生的东西,不是 web 的

Jason丨玖卿 回复

可以定位

乍暖还寒 回复

那你后面是怎么解决的?
NATIVE_APP 是原生的,我循环切换过所有的 context 都找不到

题主,想请教下 web 端和小程序端是怎么结合起来的?

Jason丨玖卿 回复

我是做 windows 的客户端自动化,主要定位手段就是句柄和图片定位,实现的效果和准确率都挺高,图片定位目前还没遇到过找不到图片的(前提是截图清晰,窗口没有类似的)

derchLee 回复

😂 我是问你之前定位元素【我的】的时候,是从微信哪个入口进入的小程序,比如:
1、微信【首页】下拉搜索小程序;
2、微信【发现】→【小程序】;
3、微信【发现】→【搜一搜】→【搜索小程序】;

蛮吉 回复

我的想法是放一个项目里进行调用

你加我好友吧,交流方便,你这个很容易就可以定位到,我最近都在研究小程序或者 app 的自动化的一些东西

Dawson 回复

好的

底部导航栏可以切换到 NATIVE 去定位,实在定位不到还可以用坐标操作

胡适 回复

试过了,返回页面元素是空的。坐标是下下策,只是想搞明白为啥不能通过元素路径定位到

Jason丨玖卿 回复

我也遇到过,有些手机能定位到,有些就定位不到,所以果断选择了坐标

胡适 回复

能定位到的手机是什么机型的呀

Jason丨玖卿 回复

p30、p20 都可以定位到,mate20pro 就定位不到

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册