首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

解决appium ui自动化无法识别悬浮窗问题

事情的起因是在两个项目上,A项目的虚浮窗按钮无法获取

B项目的推荐和看动态无法获取UI元素

通过adb shell dump也是无法获取到,但就一个问题,为啥weditor可以定位到呢?

那奇怪了是什么原因?为什么会突然有这个现象呢?因为我们是用weditor录制脚本,然后用appium执行,appium通过http请求的response和打印的日志,都是没有获取到相关元素。

经过对比实验,是ui2的问题,weditor的atx ui2是有修改过的。所以就安排开始看ATX ui2项目,进行定位,并对appium的UI2进行修改,最终搞定。appium自动化框架都可以识别到,解决了悬浮窗popwindow这类节点定位不到的问题。

ATX 和appium获取当前Android设备上所有可访问窗口的根节点元素区别:

ATX 代码:(简称A)

appium 代码(简称B)

这两段代码都是获取当前Android设备上所有可访问窗口的根节点元素,但是实现方法不同,具体不同如下:

共同之处:

1.都是获取当前Android设备上所有可访问窗口的根节点元素;

2.都是通过AccessibilityService的相关方法实现的;

不同之处:

1.A代码是在获取根节点元素时使用了XML序列化,并将序列化结果存储到ByteArrayOutputStream中,然后再将其转换为InputStream返回;

2.A代码是直接获取所有窗口的根节点元素,而B代码则有选择地获取所有窗口或者只获取活动窗口的根节点元素;

3.A代码不涉及缓存,每次调用都会重新获取根节点元素,而B代码则通过缓存来优化性能,如果缓存中已经存在获取到的窗口根节点元素,则直接返回缓存中的结果;

所以整体appium获取不到元素的原因在于不同之处的第2和第3点,实时获取根节点元素以及获取的方式,修改的地方很多,但可以根据ATX的ui2来修改;

以上,就是关于解决appium 无法获取PopWindow 悬浮窗问题,当然获取不到,还可以用图像识别,但不在本次的讨论范围~

如果需要已编译好的appium-uiautomator2-server apk,请加微信:Dark_Angel168 或者扫描,备注获取apk包,也可关注订阅号,后台回复“ui2”获取下载链接;

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230420A014PA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券