这是《Python编程快速上手 让繁琐工作自动化》第18章的内容和课后习题
程序直接控制键盘和鼠标。这些程序可以控制其他应用,向它们发送虚拟的击键和鼠标点击,就像你自己坐在计算机前与应用交互一样。这种技术被称为“图形用户界面自动化”,或简称“GUI自动化”
请将 GUI 自动化看成是对一个机械臂编程。你可以对机械臂编程,让它敲键盘 或移动鼠标。对于涉及许多无脑点击或填表的任务,这种技术特别有用。也可以用在自动化测试方面。
pyautogui模块包含了一些函数,可以模拟鼠标移动、按键和滚动鼠标滚林
安装
pyautogui 模块可以向 Windows、OS X 和 Linux 发送虚拟按键和鼠标点击。根据你使用的操作系统,在安装 pyautogui 之前,可能需要安装一些其他模块(称为 依赖关系)。
在 Windows 上,不需要安装其他模块。
在 OS X 上,运行 sudo pip3 install pyobjc-framework-Quartz,sudo pip3 install pyobjc-core,然后 sudo pip3 install pyobjc。
在 Linux 上,运行 sudo pip3 install python3-xlib,sudo apt-get install scrot,sudo apt-get install python3-tk , 以及 sudo apt-get install python3-dev ( Scrot 是 PyAutoGUI 使用的屏幕快照程序)。
在这些依赖安装后,运行 pip install pyautogui(或在 OS X 和 Linux 上运行 pip3), 安装 pyautogui。
PyAutoGui常用函数
pyautogui.size() 返回当前屏幕分辨率
pyautogui.position()获取鼠标的位置
moveTo(x,y)将鼠标移动到指定的 x、y 坐标。
moveRel(xOffset,yOffset)相对于当前位置移动鼠标。
dragTo(x,y)按下左键移动鼠标。
dragRel(xOffset,yOffset)按下左键,相对于当前位置移动鼠标。
click(x,y,button)模拟点击(默认是左键)。
rightClick() 模拟右键点击。
middleClick() 模拟中键点击。
doubleClick() 模拟左键双击。
mouseDown(x,y,button)模拟在 x、y 处按下指定鼠标按键。
mouseUp(x,y,button)模拟在 x、y 处释放指定键。
scroll(units)模拟滚动滚轮。正参数表示向上滚动,负参数表示向下滚动。
typewrite(message)键入给定消息字符串中的字符。
typewrite([key1,key2,key3])键入给定键字符串。
press(key)按下并释放给定键。
keyDown(key)模拟按下给定键。
keyUp(key)模拟释放给定键。
hotkey([key1,key2,key3])模拟按顺序按下给定键字符串,然后以相反的顺 序释放。
screenshot() 返回屏幕快照的 Image 对象。
习题
1.如何触发 pyautogui 的失效保护来停止程序?1
将鼠标移到屏幕左上角,这将导致pyautogui产生pyautogui.FailSafeException异常
2.什么函数返回当前的分辨率?
1 | pyautogui.size() |
3.什么函数返回鼠标当前位置的坐标?
1 | pyautogui.position() |
4.pyautogui.moveTo() 和 pyautogui.moveRel() 函数之间的区别是什么?1
2pyautogui.moveTo() # 鼠标移动到指定位置
pyautogui.moveRel() # 相对于当前的位置移动鼠标
5.什么函数用于拖放鼠标?1
2pyautogui.dragTo() # 将鼠标拖动到新的位置
pyautogui.dragRel() # 将鼠标拖动到相对当前位置的位置
6.调用什么函数将替你键入字符串”Hello world!”?1
pyautogui.typewrite('Hello world')
7.如何模拟按下向左键这样的特殊键?1
pyautogui.typewrite(['a', 'b', 'left', 'left', 'X', 'Y']) # out: XYab
8.如何将当前屏幕的内容保存为图形文件并命名为 screenshot.png?1
pyautogui.locateOnScreen('submit.png')
9.什么代码能够设置每次 pyautogui 函数调用后暂停两秒钟?1
time.sleep(2)
自动填表程序
1 |
|
参考资料
《Python编程快速上手 让繁琐工作自动化》