windows UI 自动化测试框架 pywinauto 使用教程

框架简介

pywinauto 是一个用于自动化测试 windows 应用的 python module,通过使用该自动化测试框架,可以模拟用户界面的交互,实现自动化操作指定应用

官方文档:https://pywinauto.readthedocs.io/en/latest/index.html

github 仓库地址:GitHub - pywinauto/pywinauto: Windows GUI Automation with Python (based on text properties)

pywinauto 支持的应用开发技术包括:

  1. Win32 API(backend="win32") - 目前是默认的开发框架,包括 MFC、VB6、VCL、简单的 WinForms 控件以及大多数旧版应用程序。

  2. MS UI Automation(backend="uia") - 包括 WinForms、WPF、Store 应用、Qt5 以及浏览器等更现代的应用程序。需要注意的是,Chrome 浏览器在启动前需要设置--force-renderer-accessibility命令行标志才能通过 UI Automation访问。此外,由于 comtypes Python库的限制,自定义属性和控件可能不受支持。

框架安装

前提条件:电脑已正确配置 python 环境,最好已安装 pycharm

执行 module 安装命令:

pip install pywinauto

运行以下脚本,检查 pywinauto 是否正常安装:

from pywinauto.application import Application
app = Application(backend="uia").start("notepad.exe")
print(app.process)

框架若正常安装后,将会启动 Notepad(记事本)应用。本教程以网易云音乐(windows 版,v3.0.5)为例,说明 pywinauto 如何使用

应用启动

Application() 实例是自动化测试应用程序起点,因此,Application 实例需要与一个进程相连接,通过两种方式实现:

start(self, cmd_line, timeout=app_start_timeout) # instance method:

connect(self, **kwargs) # instance method:

当应用程序未运行并且需要启动它时使用 Start(),用法如下:

app = Application(backend='uia').start(r"c:\path\to\your\application -a -n -y --arguments")

timeout 参数是可选的,只有当应用程序需要很长时间启动时才需要使用它。

当要自动化的应用程序已经启动时使用 Connect()。要指定一个已经运行的应用程序,您需要指定以下选项之一:

process 应用程序的进程 id,例如:

app = Application(backend='uia').connect(process=2341)

handle 应用程序窗口的窗口句柄

app = Application(backend='uia').connect(handle=0x010f0c)

path 应用程序的安装路径

app = Application(backend='uia').connect(path=r"c:\windows\system32\notepad.exe")

使用 Connect()方法,要确保应用已启动且应用窗口在前台(应用获取到焦点)

实战环节

下载、安装网易云音乐,安装路径为:D:\soft\CloudMusic\cloudmusic.exe,代码实现:

path=r'D:\soft\CloudMusic\cloudmusic.exe'#应用程序安装的路径
app = Application(backend='uia').start(path)
print(app.process)

运行以上代码后,网易云音乐将自动打开

获取应用窗口

应用程

你可能感兴趣的:(测试相关,python)