1、PyAutoGUI
PyAutoGUI是以图像识别来进行模拟键盘、鼠标在界面上进行操作。
安装:
pip install pyautogui
坐标系:
默认的坐标系从屏幕左上角开始,x 轴向右增大,y 轴向下增大。所以显示器上每个点都有自己的位置。
引申一下,当知道界面上每个按钮的位置时,点击这些点,就是执行相应的操作了。
当然,这一切的前提是界面不变。大多数应用的界面、按钮位置不会变来变去。如果你有这方面需求,可以参考下locateOnScreen()函数。这个函数根据你提供的图片,在屏幕上找到像素匹配的地方。这样就不怕按钮动来动去了。
-
pyautogui的简单使用
-
https://blog.csdn.net/qq_43734041/article/details/122889565 -
详解Python中pyautogui库的最全使用方法
-
https://www.jb51.net/article/183926.htm
2、PyWinAuto
PyWinAuto是 获取窗口对象来进行鼠标和键盘操作的。
安装:
pip install pywinauto
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教程
-
http://t.zoukankan.com/little-kwy-p-11926182.html -
pywinauto实现windows窗口自动化操作
-
https://www.cnblogs.com/steveni/p/15362833.html -
pywinauto精品入门教程
-
https://blog.csdn.net/zh6526157/article/details/119859398
三、WinAppDriver
PC 端自动化最佳方案 - WinAppDriver
https://blog.csdn.net/qq_39241986/article/details/119834169
1. 前言
一提到自动化,可能大家想到的是 App 端的 Appium、Airtest、AutoJS,亦或是 Selenium、Puppeteer、Cypress 等 Web 端的自动化框架
本篇文章,我将和大家聊聊 PC 端的自动化工具 - WinAppDriver
2. 准备
WinAppDriver,全称为 Windows Application Driver,它是 Windows 上一个类似 Selenium 的 UI 自动化驱动服务框架
它支持 Appium,可以使用 Appium-Python-Client 依赖库完成对 Windows 桌面程序的自动化操作
需要注意的是,要使用 WinAppDriver 服务框架完成 Windows 的自动化,需要满足 Windows10 或 Windows Server 2016 以上系统
另外,它支持的应用程序包含:
-
UWP - Universal Windows Platform
-
WinForms - Windows Forms
-
WPF - Windows Presentation Foundation
-
Win32 - Classic Windows