Python自动化第一弹:安装依赖库以及入门指南

Pywinauto 简介

Pywinauto 是一组用于自动化 Microsoft Windows GUI 的 python 模块(第三方库)。
最简单的是,它允许您将鼠标和键盘操作发送到窗口对话框和控件。
注意是在 windows 系统下运行的。

安装 Pywinauto (pip 或者 手动安装)

pip安装

pip install pywinauto

手动安装

https://github.com/pywinauto/pywinauto/releases 中下载最新的 pywinauto
解压并运行 python setup.py install

检查是否安装成功

打开 文本编辑器

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

入门

选择 backend

从官网上面看,你需要确定哪种可访问性技术(pywinauto 的 backend)可以用于您的应用程序。
也就是 Windows上受支持的辅助功能技术列表。
说人话,就是需要选取哪种 backend 作为控制辅助,包括 win32 和 uia (后者的控件支持更全面)

GUI 对象检查/Spy工具

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

Inspect.exe 是Microsoft创建的另一个很棒的工具。 它包含在 Windows SDK中

自动化的入口

在 Python 中有一个 subprocess 库用来管理操作系统进程,您应该启动应用程序或连接到现有的应用程序实例。 它可以使用 Application 对象完成。 这不仅仅是subprocess.Popen的克隆

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

窗口描述

这是高级pywinauto API的核心概念。 您可以近似或更详细地描述任何窗口或控件。

>>> dlg_spec = app.window(title=u'无标题 - 记事本')

>>> dlg_spec
<pywinauto.application.WindowSpecification object at 0x0568B790>

>>> dlg_spec.wrapper_object()
<pywinauto.controls.win32_controls.DialogWrapper object at 0x05639B70

可以看到实际窗口查找由wrapper_object()方法执行。 它返回实际现有窗口/控件的一些包装器或引发ElementNotFoundError。 这个包装器可以通过发送动作或检索数据来处理窗口/控件。

在调用可以中隐藏掉 wrapper_object()
比如让窗口最大最小化

dlg_spec.wrapper_object().minimize() # 在调试时
dlg_spec.minimize() # 在生产环境中

窗口链式嵌套
写入文本编辑器

# 可以是多层次的
window_ele = app.window(title_re='.* - 记事本').window(class_name='Edit')
window_ele.type_keys("python自动化")

可以在 pywinauto.findwindows.find_elements()函数中找到可能的标准列表


Pywinauto

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!