pywinauto简介

1、pywinauto是什么

pywinauto是一组实现windows GUI窗口自动化的python模块。使用pywinauto可以方便的给窗口发送鼠标、键盘事件,使用python程序控制程序窗口。

2、安装

2.1、自动安装

  • 使用pip
pip install pywinauto
  • 或者使用conda
conda install -c conda-forge pywinauto

2.2、手动安装

  • 安装如下python包
    • pyWin32
    • comtypes
    • six
    • Pillow(选装,用于截图)
  • 从https://github.com/pywinauto/pywinauto/releases下载最新版本的pywinauto
  • 解压后运行
    python setup.py install

2.3、安装验证

from pywinauto.application import Application

app = Application().start("notepad.exe")
app.Notepad.Edit.type_keys('Hello{SPACE}World!')

安装正常的话,运行上面的代码,会打开记事本,书写“Hello World!”。其中{SPACE}表示键盘输入空格。

注:如果windows默认输入法是中文,运行上述代码可能会出现中文或者空格不能正常显示,在输入法设置中设置默认为英文即可。

3、pywinauto程序运行原理

pywinauto库很多地方都使用类的__getattribute__()属性解析方法,例如“app.Notepad”将会查找title为“Notepad”的子窗口,“app.Notepad.Edit”将会在title为“Notepad”的子窗口中查找title为“Edit”的子窗口或控件。

属性解析失败,会延迟一段时间(默认是5秒),再进行重试。超过默认时间,仍然解析失败,会抛出超时异常。如下面的代码:

app.Notepad.menu_select("文件->另存为(&A)...")
app['另存为'].Edit.type_keys(r'D:\tem\test.txt')
app['另存为']['保存(&S)'].click()

 在执行第二行代码时,“另存为”对话框可能还未打开。这时属性解析将会等待一段时间,等待“另存为”对话框打开后,再继续后续的解析。这个机制很方便,避免我们显示使用time.sleep函数。

你可能感兴趣的:(pywinauto,python,pywinauto)