Appium (急)关于 appium 查找元素的两个问题

mcgrady525 · October 13, 2022 · Last by kiki replied at March 07, 2023 · 6667 hits

问题 1:如何获取 “估值” 这个元素并点击?
通过 appium inspector 分析发现股吧,资讯,公告,成份股和估值整个是一个 android.view.View 控件,没办法直接获取到 “估值” 这个元素呢?

问题 2:如何获取市盈率 PE 的值呢?
分析发现这个控件没有 resource-id,那么如何获取市盈率 PE 的值呢?

非常感谢!

最佳回复

问题 1:
传入 resource-id(股吧,资讯,公告,成份股和估值)获取到元素的 location ,这样就可以拿到总体元素的 x,y 的坐标,需要点击估值可直接用获取到的 y 值,x 的值的话使用偏移量去计算 x 的百分比,然后传入 tap 命令去点击,如果很多这样的元素可以考虑封装方法,单个的话就直接写代码吧

问题 2:
切换上下文,在 h5 页面获取元素位置

共收到 13 条回复 时间 点赞

可以通过 text 去定位么 text=估值

可以使用 text 来取,不过这个值变了就不行了

问题 1:如何获取 “估值” 这个元素并点击?

从截图看,这个 tab 栏是个继承了 View 的自定义控件,且没有实现 accessibility 相关 api ,导致内部的子 view 没法被获取到(uiautomator dump 控件树,本质上是从最外层的 FrameLayout 开始递归调用子孙组件的 accessibility 相关对象来获取的,类似读屏软件。所以如果没实现对应方法,就会获取不到内部的子控件)。如果能推动开发增加相关支持,可以尝试推动下。如果不行,可以考虑用图像识别类方法。

参考文章:让自定义视图使用起来更没有障碍

问题 2:如何获取市盈率 PE 的值呢?

这是个 webview 内的元素,你切换到 webview 上下文后,应该就可以看到这个控件对应的元素了。

问题 1:
传入 resource-id(股吧,资讯,公告,成份股和估值)获取到元素的 location ,这样就可以拿到总体元素的 x,y 的坐标,需要点击估值可直接用获取到的 y 值,x 的值的话使用偏移量去计算 x 的百分比,然后传入 tap 命令去点击,如果很多这样的元素可以考虑封装方法,单个的话就直接写代码吧

问题 2:
切换上下文,在 h5 页面获取元素位置

如果打印 page_source 无法获取到估值这个文本按理是不能通过 text 文本定位,但是如果能用 text 文本定位还是推荐用 text 文本定位

能不能用 find_elements 找到,然后在找到估值?

https://github.com/Meituan-Dianping/vision-ui
可以用这个图片识别的库来处理

问题 1: 坐标定位、图像识别
问题 2: webview 切换上下文再定位

用 weditor 工具看下,可以识别就可以用。其余的跟 8 楼方法差不多,记得坐标定位是控件的相对坐标,非原始坐标~

可以换成使用 text 定位

Time 回复

谢谢,此方案可行。

可以在其它的页面层级找找,页面渲染有时会页面层级覆盖,page_source 里能找到,但页面定位不到说明在其它页面层级显示
另外 appium inspactor 定位不到具体元素,比如你上文所说的 tab,也可尝试通过工具 weidtor 定位元素

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up