使用的 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 就这样显示了,不知道是不是这个原因导致找不到底部导航栏元素路径:
如果特指微信小程序,要开调试模式,自己搜下
其他小程序,目前貌似没有办法
pyhton 的话建议尝试使用 UIautomator2,我最近再用这个操作小程序,感觉使用起来比 appium 舒服,我是放弃了 appium 转到 uiautomator2 中来的,项目变得顺利很多
目前通过点击坐标的方式能点击成功,但这是下下策。
点击坐标对应的 tabBar 后能获取到对应 tabBar 页面的页面元素
这要看具体的情况了,你这种可能直接通过 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 等,本人试过,图标唯一,截图清晰的话准确率还是有保障的
Appium 的底层就是包含 UIautomator2,按理说应该没有太大的区别,在 Appium 中使用 UIautomator2 的引擎。
你能定位到【我的】这个元素吗
airtest 还需要另一个 IDE,我目前需要把 WEB 自动化 + 小程序自动化 串起来,所以在同一个 IDE 比较好
可以使用 Minium 这个框架,是微信开发用来做小程序自动化的,https://minitest.weixin.qq.com/#/官方文档
我目前需要把 WEB 自动化 + 小程序自动化 串起来,Minium 只支持手机端的,还得另外搞一个框架,应该没法穿起来吧
微信小程序的话好像微信有一个框架 叫 minium 可以去看看
我之前也遇到过,不过我用的不是这套框架,小程序这里好像是调用了原生的东西,不是 web 的
题主,想请教下 web 端和小程序端是怎么结合起来的?
我是做 windows 的客户端自动化,主要定位手段就是句柄和图片定位,实现的效果和准确率都挺高,图片定位目前还没遇到过找不到图片的(前提是截图清晰,窗口没有类似的)
我是问你之前定位元素【我的】的时候,是从微信哪个入口进入的小程序,比如:
1、微信【首页】下拉搜索小程序;
2、微信【发现】→【小程序】;
3、微信【发现】→【搜一搜】→【搜索小程序】;
你加我好友吧,交流方便,你这个很容易就可以定位到,我最近都在研究小程序或者 app 的自动化的一些东西
底部导航栏可以切换到 NATIVE 去定位,实在定位不到还可以用坐标操作