属性定位
背景
传统的 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()