Skip to content
📔 阅读量:

属性定位

背景

传统的 UI 自动化大多都是基于浏览器的,核心是在网页的 DOM 树上查找元素,并对其进行定位操作;

Linux 桌面应用大多是采用 Qt 编写的,在 Qt 中也是从最顶层的 MainWindow 开始构建应用,所以逻辑也是一样的,Qt 应用的自动化测试同样可以通过 DOM 树(属性树)进行元素定位,我们称之为属性定位

借助开源工具 dogtail 我们可以对元素进行获取,从而进行定位操作。dogtail 的项目介绍可以猛戳这里

sniff(嗅探器)使用

安装 PyLinuxAuto 之后,在终端输入 sniff 启动 AT-SPI Browser:

shell
mikigo@mikigo-PC:~$ sniff

查看应用的标签

在 sniff 里面可以看到系统中已启动的应用,点击应用名称前面的三角形图标,可以展开应用的标签,所有标签以 tree 的形式展示,对应应用里面的父窗口和子窗口。

获取元素控件的标签名称

首先,为了方便查看元素控件对应的位置,建议现在上方工具栏点击 Actions,然后勾选 Hightlight Items,这样在 sniff 中鼠标选中元素标签的时候,应用中会有相应的光标锁定。

在 sniff 里面点击进入应用的标签 tree 中后,点击相应的元素控件,在工具下方,会展示元素控件的 Name,这个就是标签名称。

tree 中有些地方是空白的或者是 Form,是因为开发人员在添加标签的时候没有添加,或者有些父窗口不需要添加,这种在实际业务中是不影响的,我们只要保证自动化测试用例中,要用到的元素都添加了标签即可。

使用说明

python
import pylinuxauto

pylinuxauto.find_element_by_attr_path("/dde-dock/Btn_文件管理器").click()