2021-07-11
技术文档
00

目录

安装
使用
选择驱动
启动应用
绑定窗口
定位元素
元素操作

因为女朋友学习的时候遇到需要对一个软件进行多次重复的情况,向我求助,我就想到了利用自动化工具来完成相关操作。一开始想使用appium中带的windows driver,但是看了一下文档觉得有些复杂,随后选择了使用pywinauto。

安装

github地址

python
pip install pywinauto

使用

选择驱动

选择对应的驱动,这里我选择的UIA模式

Win32 API (backend="win32") - 现在的默认backend

MFC, VB6, VCL, 简单的WinForms控件和大多数旧的遗留应用程序

MS UI Automation (backend="uia")

WinForms, WPF, Store apps, Qt5, 浏览器 注意: Chrome在启动之前需要--force-renderer-accessibility cmd标志。 由于comtypes Python库限制,不支持自定义属性和控件。

本来我并不确定要选择什么驱动,所以我使用了inspect.exe,在uia模式下可以检索出更多的控件属性,所以我使用uia模式。还有更多的检查工具可以帮助我们选择适合的驱动。

image.png

启动应用

启动应用使用start(“app_path”)函数

python
from pywinauto.application import Application app = Application(backend="uia").start('G:\\CurveFitting\\CurveFitting.exe')

绑定窗口

使用window()函数

python
win_page = app.window(title='水文频率分布曲线适线软件(教学版)')

其中的title可以由inspect软件在uia模式下选择软件窗口,在value.value下查看。

定位元素

定位元素前可通过print_control_identifiers()查看软件DOM树

python
win_page.print_control_identifiers()

从返回结果中查找定位元素的属性值,方便进行定位。定位时使用窗口["属性值"]即可定位。

python
# 点击获取数据 win_page['Button11'].click()

元素操作

可通过定位.操作的方式进行元素操作。

python
# 输入设计值 win_page['Edit6'].type_keys(input_value) # 点击立即查询 win_page['立即查询'].click() # 获取设计频率 output_value = win_page['Edit7'].legacy_properties()['Value']

通过上述操作即可实现软件的自动化操作,亦可为测试自动化所用。

本文作者:Yaki

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!