news 2026/7/27 5:52:18

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
解决appium ui自动化无法识别悬浮窗问题

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

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

通过adbshell 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 悬浮窗问题,当然获取不到,还可以用图像识别,但不在本次的讨论范围~

最后作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些软件测试的学习资料和我花了3个月整理的软件测试自学全栈,这些资料希望能给你前进的路上带来帮助。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/26 16:25:12

通义千问3-VL-Plus - 界面交互(本地图片)

一、前言 在前文 通义千问3-VL-Plus - 界面交互-CSDN博客 之后,我改装一下代码,让本地图片可以被识别。 整体改造思路 兼容本地图片:新增本地图片路径参数,通过 Base64 编码将本地图片转为 GUI-Plus 支持的格式;保留…

作者头像 李华
网站建设 2026/7/25 6:27:08

使用C#代码更改 PowerPoint 幻灯片大小

更改幻灯片大小是保持 PowerPoint 演示文稿视觉完整性的一种方式。通过将幻灯片尺寸调整为与目标屏幕或投影设备相匹配的纵横比和大小,可以避免内容被裁剪、拉伸或变形等问题。在本文中,您将学习如何使用 Spire.Presentation for .NET 在 C# 中更改 Powe…

作者头像 李华
网站建设 2026/7/26 23:26:49

基于单片机的智能电动车设计

收藏和点赞,您的关注是我创作的动力 文章目录概要一、硬件设计二、软件设计3.1 工程整体构建3.2小车主要程序流程图3.3 外接电源3.4超声波避障四、 总结五、 文章目录概要 本系统以AT89C51为主控核心,制作一个智能小车,意在对智能汽车的探究。…

作者头像 李华
网站建设 2026/7/24 6:45:01

Shipit自动化部署终极指南:从零到精通完整教程

Shipit自动化部署终极指南:从零到精通完整教程 【免费下载链接】shipit Universal automation and deployment tool ⛵️ 项目地址: https://gitcode.com/gh_mirrors/sh/shipit 部署是每个开发团队都必须面对的重要环节,传统的手动部署方式不仅效…

作者头像 李华
网站建设 2026/7/24 21:27:24

Freedom Chat | 这款美国通讯应用泄露了所有人的电话号码

Freedom Chat 是一款宣称具备顶级端到端加密、无元数据收集和去中心化架构的通讯应用,主要面向保守派群体。然而,安全研究员通过简单的逆向工程发现,该应用实际上并未兑现其安全承诺,反而暴露了用户的敏感信息。 虚假的安全承诺 该…

作者头像 李华
网站建设 2026/7/26 0:07:48

JMeter 二次开发环境准备详解

Apache JMeter,作为一款强大的性能测试工具,不仅支持对Web应用进行压力测试,还因其开源、可扩展性强的特性,允许开发者进行二次开发以满足特定的测试需求。本文将详细介绍如何进行JMeter二次开发前的环境准备工作。 系统与软件要…

作者头像 李华