前言
这一章节讲述了如何实现 GUI 自动化,首先讲了一些处理异常状况的方法,然后是关于 GUI 自动化的内容,主要有三个部分:
- 控制鼠标
- 图像识别
- 控制键盘
下面引用一段话:
请将 GUI 自动化看成对一个机械臂编程。你可以对机械臂编程,让它敲键盘或移动鼠标。对于涉及许多无脑点击或填表的任务。这种技术特别有用。
处理异常的办法
方法一:通过注销关闭所有程序:
Windows/Linux:Ctrl+Alt+Del
Mac OS:cmd+Shift+Option+Q
方法二:设置 pyautogui 的暂停
格式:pyautogui.PAUSE = 1.5
功能:将该变量设置为要暂停的秒数,在每次进行完函数调用之后暂停这段秒数的时间
方法三:pyautogui 自动防故障功能:
格式:pyautogui. FAILSAFE = True
功能:将鼠标移到屏幕的左上角,将触发pyautogui.FailSafeException异常。
禁用:可以让 pyautogui. FAILSAFE = False, 禁止使用这项功能。
控制鼠标
预备知识:
- 屏幕的坐标表示法。
- 可通过 pyautogui.size() 返回计算机的屏幕分辨率。
- PyAutoGUI 函数中,有一个 duirantion 关键字,可以指定为函数的可选参数,表示其进行动作的时间。
移动鼠标
格式:
绝对位置:pyautogui.moveTo(x, y)
相对于目前的位置:pyautogui.moveRel(x, y)
其他:
获得鼠标绝对位置:格式:pyautogui.position()
点击鼠标
格式:
pyautogui.click(x, y, button ='left')
功能:
使用 button 的参数模拟鼠标点击 (x,y) 处,button 参数可为 'left','middle' 和 'right', 是一个可选值,默认为左键。
其他:
- 按下鼠标按键:pyautogui.mouseDown()
- 松开鼠标按键:pyautogui.mouseUp()
- 双击鼠标左键:pyautogui.doubleClick()
- 双击鼠标右键:pyautogui.rightClick()
- 双击鼠标中键:pyautogui.middleClick()
拖动鼠标
格式:
绝对坐标拖动:pyautogui.dragTo(x, y)
相对当前坐标拖动:pyautogui.dragRel(x, y)
功能:
进行拖动,(另外作者建议在 Mac OS 上,最好添加 duration 参数)
滚动鼠标
格式:
scroll(200)
功能:
在相对的状态下,传递正数向上滚动,传递负数向下滚动。
图像识别
处理屏幕
获得屏幕快照:
格式:im = pyautogui.screenshot()
功能:返回一个整个屏幕的 Pillow Image 对象。
分析屏幕快照:
格式:pyautogui.pixelMatchesColor(50, 200, (130, 135, 144))
功能:接受一个坐标值和一个含有三个整数的 RGB 元组,然后进行判断颜色是否匹配,最后返回一个 True / False.
识别 & 定位
1. 获得一小块区域的屏幕快照
2. 使用 locateOnscreen() 这个方法进行定位
格式: pyautogui.locateOnscreen('submit.png')
功能:接受屏幕快照,返回屏幕上发现该图像的左上角坐标以及图像的宽度、高度。
控制键盘
键盘输入
格式:pyautogui.typewrite('Hello world!',0.25)
功能:在文本输入框内的焦点处,自动输入第一个参数的字符串,第二个参数每个字母之间停留的时间间隔,是可选参数。
其他
- 键入给定键字符串:除了字符串,还可以传递键盘键字符串。如:'enter','up','tab' 等等。格式:pyautogui.typewrite(['left','right','enter'])
- 按下和释放键盘:pyautogui.keyDown('shift'), pyautogui.keyUp('4')
- 热键组合:pyautogui.hotkey(['ctrl','c']) 功能:可执行组合键