解决appium ui自动化无法识别悬浮窗问题
事情的起因是在两个项目上,A项目的虚浮窗按钮无法获取,B项目的推荐和看动态无法获取UI元素。通过adb shell dump也是无法获取到,但就一个问题,为啥weditor可以定位到呢?
事情的起因是在两个项目上,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 悬浮窗问题,当然获取不到,还可以用图像识别,但不在本次的讨论范围~
最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
全套教程获取方式:
更多推荐
所有评论(0)