击败无聊的办公室重复操作——pyautogui使用详解
2018-10-17 本文已影响0人
一言不合就跑步
写在前面的话
最近看了一篇大神用pyautogui和pywin32写出跳一跳外挂的文章,心里很是佩服。于是今天一摸电脑就先看了pywin32,你猜怎么着?
完全看不懂!你没有看错,好复杂啊。
老师教导我们碰到看不懂的题目怎么办?当然是放弃啦,哈哈哈哈!(不要打我)
转而看pyautogui,这个还行,不是很复杂,一天下来 ,基本已经掌握。本着好东西要分享的原则,根据官方文档的顺序将使用方法介绍如下:
鼠标基本操作
0,0 X increases -->
+---------------------------+
| | Y increases
| | |
| 1920 x 1080 screen | |
| | V
| |
| |
+---------------------------+ 1919, 1079
这是鼠标操作的(x,y)坐标图。可以看出原点位于屏幕左上角,水平为x方向,垂直为y方向,每一个点都可以用坐标点来表示。看到这里,我仿佛回到了初三的数学课堂……
确定x,y在屏幕上,用函数onscreen
pyautogui.onScreen(0,0)
True
确定屏幕尺寸,用函数sizi()
pyautogui.size()
移动鼠标
pyautogui.moveTo(100, 200) #绝对移动
pyautogui.moveRel(100, 200)#相对移动
拖拽鼠标
pyautogui.dragTo(100, 200, button='left')#绝对移动
pyautogui.dragRel(30, 0, 2, button='right') #相对移动
渐变移动(不重要)
pyautogui.moveTo(100, 100, 2, pyautogui.easeInQuad) # start slow, end fast
pyautogui.moveTo(100, 100, 2, pyautogui.easeOutQuad) # start fast, end slow
pyautogui.moveTo(100, 100, 2, pyautogui.easeInOutQuad) # start and end fast, slow in middle
pyautogui.moveTo(100, 100, 2, pyautogui.easeInBounce) # bounce at the end
pyautogui.moveTo(100, 100, 2, pyautogui.easeInElastic) # rubber band at the end
鼠标点击
pyautogui.click(x=100, y=200)
pyautogui.click(clicks=2)
pyautogui.doubleClick(buttton='right')
鼠标按下和抬起
pyautogui.mouseDown()
pyautogui.mouseUp()
拖拽鼠标
pyautogui.scroll(10, x=100, y=100) # move mouse cursor to 100, 200, then scroll up 10 "clicks"
键盘基本操作
输入字符
pyautogui.typewrite('Hello world!')
按下键,抬起键和press(可以传列表)
yautogui.keyDown('shift') # hold down the shift key
pyautogui.press('left') # press the left arrow key
pyautogui.press('left') # press the left arrow key
pyautogui.press('left') # press the left arrow key
pyautogui.keyUp('shift') # release the shift key
组合热键
pyautogui.hotkey('ctrl', 'shift', 'esc')
消息框设置
pyautogui提供了消息框功能,分别问确认方式、确认和取消方式和输入框模式
pyautogui.alert('This displays some text with an OK button.')
pyautogui.confirm('This displays text and has an OK and Cancel button.')
'OK'
pyautogui.prompt('This lets the user type in a string and press OK.')
'This is what I typed in.'
截屏功能
为了方便屏幕点击,pyautogui提供了一个截屏功能,具体如下:
- 可以直接截屏,当变量使用
- 也可以截屏,保存在当前文件夹
- 截屏功能有一个region函数,用来选择性截屏,用一个tuple来表示left,top,width,height
- 截屏后可以用locateOnScreen()来测量截屏大小
- center()函数用了确定截屏中心点x,y
- 确定某点的颜色
im1 = pyautogui.screenshot()
im2 = pyautogui.screenshot('my_screenshot.png')
im = pyautogui.screenshot(region=(0,0, 300, 400))
pyautogui.locateOnScreen('calc7key.png')
pyautogui.center(button7location)
pyautogui.locateCenterOnScreen('calc7key.png')
im = pyautogui.screenshot()
im.getpixel((100, 200))