pywinauto桌面应用自动化


pywinauto

pywinauto是一组用于自动化Microsoft Windows GUI的python模块。 最简单的是,它允许您将鼠标和键盘操作发送到窗口对话框和控件,来完成我们自动化操作。

官方文档:http://pywinauto.github.io/

安装:

方法一:

通过pip进行安装:pip install pywinauto 

 方法二:

https://github.com/pywinauto/pywinauto/releases中下载最新的pywinauto,解压并允许  python setup.py install 进行安装

验证是否安装成功:

方法一:

直接打开python,进行导入对应的库

方法二:

通过pip进行查看 pip list 

小试牛刀

在练习之前,需要先了解一个内容,目前pywinauto支持2种查看客户端控件内容

  • 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库限制,不支持自定义属性和控件。

如果不确定自己的软件测试时哪一种,我们先用默认的,如果运行过程中会报提示, UserWarning: 32-bit application should be automated using 32-bit Python (you use 64-bit Python) UserWarning) 

检测控件软件:

我们可以通过以下三种软件进行检测应用的控件或窗口,来进行操作

1、Spy++ 包含在MS Visual Studio发行版(甚至是Express或Community)中,可通过“开始”菜单访问。 它使用Win32 API。 这意味着如果Spy ++能够显示所有控件,那么“win32”`backend就是你需要的。 AutoIt Window Info工具是一种Spy ++克隆。

2、Inspect.exe 是Microsoft创建的另一个很棒的工具。 它包含在Windows SDK中,因此可以在x64 Windows上的以下位置找到它:

C:\Program Files (x86)\Windows Kits\10\bin\10.0.17134.0\x64

如果以上路径不存在,请自行下载安装:https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/

3、ViewWizard软件,可以非常方便的检测到我们需要用到的控件类型。

 

安装也安装完成了,查看也查看过了,那么先进行启动我们的客户端进行测试吧(这里通过的是记事本)

# coding:utf-8
# 导入pywinauto库
from pywinauto import application
# 直接启动记事本
app = application.Application().start('notepad.exe')

运行指定程序

分别拿电脑自带程序和电脑非自带程序进行模拟打开。

1、windows自带程序:

这里需要start后面的参数,可以通过上一篇介绍的工具进行获取,也可以通过鼠标右键--属性查看

# coding:utf-8
from pywinauto import application
# 打开记事本
app = application.Application().start('notepad.exe')

2、非windows自带程序:

这里我们如果按照上面的方法进行查看的话会报错误,这里我们拿电脑上安装的QQ来测试

发现提示找不到指定的文件

这里把QQ的文件地址全部都拷贝上试试看呢?

 发现这里是直接打开的,因为程序运行后是从环境变量中查找的,我们可以通过把程序添加到环境变量中直接调用

这个时候再次运行发现就已经可以成功的打开了QQ

# coding:utf-8
from pywinauto import application
# 打开QQ
app = application.Application().start('QQScLauncher.exe')

启动已打开程序

前面的例子我们会发现都是程序没有运行起来的,那么想要启动已经运行起来的程序应该怎么做?

方法一:

通过进程号的形式进行打开

 方法二:

通过窗口句柄的形式打开。问题来了?怎么查看窗口句柄?

这个时候需要通过前面说的viewWizard工具进行查看,通过下图可以看到窗口的句柄为134242

 方法三:

通过标题的方式打开

# coding:utf-8
import pywinauto
# 通过窗口打开
app = pywinauto.Desktop()
win = app['QQ']
print(win)

 

 

可以发现通过句柄的形式也可以指定这个软件。然后进行对软件操作


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM