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

Jason丨玖卿 · 2021年06月23日 · 最后由 TesterWa 回复于 2023年01月29日 · 9832 次阅读

使用的 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 就这样显示了,不知道是不是这个原因导致找不到底部导航栏元素路径:

共收到 30 条回复 时间 点赞

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

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 就定位不到

回复内容未通过审核,暂不显示
需要 登录 後方可回應,如果你還沒有帳號按這裡 注册。