使用可访问性(a11y)技术与桌面应用程序通信的GUI测试工具和自动化框架。
项目描述
Ed Rousseau <rousseau@redhat.com>, David Malcolm <dmalcolm@redhat.com>, Vitezslav Humpa <vhumpa@redhat.com>, Michal Odehnal <modehnal@redhat.com> 作者邮箱:Zack Cerza <zcerza@redhat.com>, Ed Rousseau <rousseau@redhat.com>, David Malcolm <dmalcolm@redhat.com>, Vitezslav Humpa <vhumpa@redhat.com>, Michal Odehnal <modehnal@redhat.com> 项目URL:主页,https://gitlab.com/dogtail/dogtail 需要Python:>=3.6 描述内容类型:text/x-rst 许可文件:COPYING
dogtail
dogtail 是一个用 Python 编写的 GUI 测试工具和 UI 自动化框架。它使用可访问性(a11y)技术来与桌面应用程序通信。dogtail 脚本是用 Python 编写的,并像任何其他 Python 程序一样执行。
Dogtail 与 behave 和 qecore(基于 behave 和 dogtail)配合使用效果很好,特别是如果您对使用基于现代 Wayland 的 GNOME 感兴趣。请参阅此文章以获取更多有关我们主要如何使用它的详细信息:[通过可访问性实现自动化](https://fedoramagazine.org/automation-through-accessibility/)。
除此之外,dogtail 应该可以与任何仍在 Xorg 上运行 atspi 的桌面环境一起工作。
新闻
dogtail 1.0
经过超过五年的持续实验和开发,我们非常高兴终于发布了 Dogtail 1.0——Dogtail 的一个支持 Wayland 的版本!我们是如何实现这一点的?这得益于由 Olivier Fourdan 创造的 gnome-ponytail-daemon。这个工具使我们能够在 Wayland GNOME 会话中执行类似 X 函数的操作。
dogtail 1.0.1 - 与我们在开发 Wayland 的同时提交到 master 分支的一些贡献进行了重新提交,但我们不小心没有包括在 1.0 中。请参阅https://gitlab.com/dogtail/dogtail/-/issues/31
还返回了几个我们认为没有用的模块(tc,wrapped),但后来证明它们是有用的,以保持 1.0 与 0.x 完全兼容。
它是如何简短工作的?
核心功能依赖于屏幕捕获和远程桌面 API,使我们能够“连接”到特定的窗口或整个屏幕,以模拟用户输入操作,如按键、输入和——最重要的是——在特定坐标上的鼠标操作。Ponytail 使用 org.gnome.Shell.Introspect 的窗口列表来识别窗口。然后 Dogtail 通过远程桌面 API 确保连接到正确的窗口,从而允许在窗口内精确执行输入操作。
在 AT-SPI 树和可访问性的“内省”方面,没有太多变化——输入是 Wayland 上的主要挑战。主要区别在于,UI 项只知“本地”窗口坐标。为了解决这个问题,我们始终连接到我们正在处理的特定窗口,Ponytail 的 connectWindow 确保这些本地坐标在内部转换为全局坐标。
这对用户意味着什么?
Dogtail 无缝处理所有这些逻辑,因此在实际使用中,用户无需担心坐标类型或窗口连接。事实上,我们的大多数测试在 X 和 Wayland 会话中使用 Dogtail API 时工作方式完全相同。在 X 会话中运行时,Dogtail 将使用传统的 X 函数来处理输入并像以前一样操作。
通往 1.0 的漫长旅程
我们开始开发支持 Wayland 的版本已有五年多时间(最初可在 devel/wayland 分支中找到)。我们花了所有这些时间来确保解决方案足够健壮和可靠,值得发布 1.0 版本。此版本包括所有与 Wayland 相关的开发以及其他更改(如下面提到的 GTK4 支持调整)并经过广泛测试。重要的是,它与迄今为止可用的整个 Dogtail API 兼容。此版本包括 0.9.x 系列的所有模块,最重要的是“过程”模块,我们计划在 Dogtail 2.0 中使用完全基于“树”的方法来弃用它。
该版本将涉及重大清理、主要代码重构,并从 pyatspi 过渡到直接检查的 atspi。它还将包含更新的代码示例,并且 Dogtail 的单元测试应该在 GitLab 管道重新启用后通过。
有关即将发生的更改的更多详细信息,请参阅问题 #29。
1.0+ 重要:在 Dogtail 中处理 GTK4 应用程序窗口
对于 GTK4 应用程序,禁用窗口阴影对于确保 Dogtail 准确定位至关重要。禁用阴影后,我们会遇到一致的坐标偏移,我们将其预配置为 dogtail.config.gtk4Offset。在处理全屏窗口的情况下,偏移量为 0,我们能够在 X11 和 Wayland 会话中即时检测到这一点。然而,这个过程需要 python-xlib,即使在 Wayland 会话中也是如此,我们利用 Xwayland 确定分辨率信息,因为我们尚未找到适用于 Wayland 的其他直接方法。
当窗口阴影处于活动状态时,感知到的偏移量可能会显著变化,受特定应用程序、窗口大小和缩放设置等因素的影响。为了确保应用程序之间的行为一致,建议禁用阴影。
在 GTK4 中禁用阴影
要禁用窗口阴影,请将以下 CSS 添加到您的 GTK4 配置文件中(~/.config/gtk-4.0/gtk.css)
window, .popover, .tooltip {
box-shadow: none;
}
安装
Dogtail 可以通过 PIP 获取!(1.0 版本的包含正在等待)。如果您想与 Wayland GNOME 一起使用它,还需要获取 dogtail-ponytail-daemon: https://gitlab.gnome.org/ofourdan/gnome-ponytail-daemon。我们将其作为依赖项包含在 PIP 中,因为它需要编译 C 代码。
检查您的发行版中的软件包!如果版本不是最新的,我们还发布了供下载的 tar 包: https://gitlab.com/dogtail/dogtail/tree/released
有关详细信息,请参阅 INSTALL 文件。
依赖项
您发行版的 Python 绑定,例如 python-apt 或 rpm-python
PyGObject 和 GNOME-Python
要测试的应用程序,例如来自 GNOME 桌面: http://gnome.org/
使用
目前,支持 GNOME 和 GTK+ 应用程序,在 Xorg 和 Wayland 会话中。请参阅示例以了解直接使用 Dogtail 或查看以下文章获取更多信息: 通过无障碍性自动化。
如果您使用的是 KDE,请在启动相应程序时设置环境变量 QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1。您可以将此行添加到您的配置文件中
export QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
根据版本,可能需要 QT_ACCESSIBILITY=1。
对于非常旧的 KDE/QT 版本(约 4.8.3 到 5.0),您必须安装 qt-at-spi QT 插件,并将环境变量 QT_ACCESSIBILITY 设置为 1。
首先,使用以下命令在您的 GNOME 会话中启用无障碍性支持
gsettings set org.gnome.desktop.interface toolkit-accessibility true
这仅影响新启动的应用程序,因此您可能需要注销并重新登录。
如果您首先运行 sniff 或使用 dogtail-run-headless-next 或 qecore-headless 脚本处理会话,则无障碍性将为您自动启用。
错误
- 请在此处报告任何错误
联系
- 网站
- 问题跟踪器
- API 文档
我们已经弃用了我们的邮件列表以及 IRC 频道。请使用我们的 GITLAB 来处理问题和合并请求!(或者如果您更喜欢使用 GitHub,可以使用 https://github.com/vhumpa/dogtail 进行拉取请求,但 gitlab.com 是首选)
项目详情
下载文件
下载您平台对应的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。
源代码发行版
构建发行版
dogtail-1.0.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 43e53c6f05cf4ecb1650c2b32e9464e5a038a8d7b96114e835f53410c23d4edb |
|
MD5 | 178c6eb2ff5e4c1b6879369be77205ea |
|
BLAKE2b-256 | c52291f5dfea0b2aba3bdc360a608ea404b2b30e627ece1f6e8088b681997624 |
dogtail-1.0.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 85c02a6592f534420635b12c26d46bce578817e0b9e84c498bcae8c8d3acad8f |
|
MD5 | 62f1584dd75129ae00bca129327e40eb |
|
BLAKE2b-256 | ea917fb5ca579493f8ebdc710fff52a752339bcf73d267066c3ec4f34cf7e19f |