PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作,多平台支持(Windows,OS X,Linux)。
一、安装
pip3 install pyautogui
二、前置函数
自动 防故障功能
# 默认这项功能为True, 这项功能意味着:当鼠标的指针在屏幕的最坐上方,程序会报错;目的是为了防止程序无法停止 pyautogui.FAILSAFE =False
停顿功能
# 意味着所有pyautogui的指令都要暂停一秒;其他指令不会停顿;这样做,可以防止键盘鼠标操作太快; pyautogui.PAUSE = 1
三、鼠标操作示例
# 获取当前屏幕分辨率 screenWidth, screenHeight = pyautogui.size() # 获取当前鼠标所在x,y坐标 mouseX, mouseY = pyautogui.position() print(mouseX, mouseY) # 鼠标的点击与释放 pyautogui.mouseDown() # 鼠标按下 pyautogui.mouseUp() # 鼠标释放 # 2秒钟鼠标移动到指定坐标位置, 绝对移动 pyautogui.moveTo(x=100, y=100, duration=2, tween=pyautogui.linear) # 1秒鼠标移动到屏幕中央 pyautogui.moveTo(screenWidth / 2, screenHeight / 2, 1) # 鼠标相对移动, 向下移动 pyautogui.moveRel(xOffset=-100, yOffset=100, duration=1.0, tween=pyautogui.linear) # 鼠标右键点击一次 pyautogui.click( x=None, # x坐标 y=None, # y坐标 clicks=1, # 点击次数 interval=0.0, # 多次点击间隔时间 button='right', # left, middle, right 对应鼠标左中右键,或取值(1,2,3) duration=0.5, # 移动到指定坐标所花费的时间 tween=pyautogui.linear # 渐变函数 ) # 鼠标左键点击一次 pyautogui.click( x=1013, # x坐标 y=789, # y坐标 clicks=1, # 点击次数 interval=0.0, # 多次点击间隔时间 button='left', # left, middle, right 对应鼠标左中右键,或取值(1,2,3) duration=0.5, # 移动到指定坐标所花费的时间 tween=pyautogui.linear # 渐变函数 ) # 鼠标在当前位置0间隔双击 pyautogui.doubleClick(x=None, y=None, interval=0, button='left', duration=0, tween=pyautogui.linear) # 鼠标在当前位置3击 pyautogui.tripleClick(x=None, y=None, interval=0, button='left', duration=0, tween=pyautogui.linear) # 右击 pyautogui.rightClick() # 中击 pyautogui.middleClick() # 左击 pyautogui.leftClick() # 鼠标控制拖动事件 pyautogui.moveTo(100,10,0.5) # 向右拖动1000px, 向下500px, 这个过程持续1秒 pyautogui.dragTo(1000, 500, 1) # 鼠标按当前位置的相对方向拖动 # 向右拖动100px, 向下500px, 这个过程持续1.5秒 pyautogui.dragRel(100, 200, 1.5) # 鼠标控制滚轮 scrool(), 传入一个整数的参数, 说明向上或向下滚动多少个单位 # 这个单位根据操作系统不同而不同 pyautogui.scroll(500)
四、键盘操作示例
# 键盘事件 pyautogui.keyDown('shift') # 按下shift pyautogui.press('4') # 按下4 pyautogui.keyUp('shift') # 释放shift # 缓慢输出 pyautogui.typewrite('# zheshi yitiao zhushi ', 0.1) pyautogui.press('enter') # 这是一条注释 # 键盘特殊顺序输出 pyautogui.typewrite(['T','i','s','left','left','h']) # 输出>>>This
五、弹出层
# 提示信息 pyautogui.alert(text='测试弹窗提示', title='提示:') # option 多按钮选择提示 res = pyautogui.confirm('请选择:', buttons=['A','B','C']) print(res) # 弹出密码输入框 pwd = pyautogui.password('请输入密码:') print(pwd) # 弹出输入框 txt = pyautogui.prompt('请输入信息:') print(txt)
六、截屏与屏幕图片识别操作
截图:
# 返回屏幕的截图, 是一个pillow的image对象 # 需要安装 Pillow 库才能使用 img1 = pyautogui.screenshot() img1.save('img1.png') # 截图方式1 img2 = pyautogui.screenshot('img2.png') # 截图方式2
屏幕图片识别匹配:
使用方法:使用截图工具截取一块屏幕上的元素,例如在桌面上新建文件夹,只截图文件夹图标和名字那一块
使用pyautogui内的识别方法,在桌面上与截图文件的元素进行识别匹配,匹配到之后返回坐标。
# 屏幕查找图片位置并获取中间点 coords = pyautogui.locateOnScreen('D:\\images\\newdir.png') print(coords) # 获取定位到的图 中间坐标 x, y = pyautogui.center(coords) # 点击该坐标 pyautogui.leftClick(x, y) # 鼠标左键双击,打开文件夹 pyautogui.doubleClick(button='left)
七、pyautogui支持模拟按键的字符
# 数字 '0','1','2','3','4','5','6','7','8','9' # 小键盘数字 'num0','num1','num2','num3','num4','num5','num6','num7','num8','num9' # 单字母 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' # 不可见字符 '\t','\n','\r',' ' # 可见特殊字符 '!','"','#','$','%','&',"'",'(',')', '*','+',',','-','.','/',':',';','<','=','>','?','@', '[','\\',']','^','_','`','{','|','}','~', # 控制类按键 'ctrl','ctrlleft','ctrlright', 'shift','shiftleft','shiftright', 'alt','altleft','altright', 'win','winleft','winright', 'del','delete','insert', 'esc','escape', 'backspace','capslock','scrolllock','numlock', 'left','up','right','down','home','end', 'enter','return','space', 'pgup','pageup','pgdn','pagedown', 'printscreen','prntscrn','prtsc','prtscr', 'tab' # 浏览器操作 'browserback','browserfavorites','browserforward','browserhome', 'browserrefresh','browsersearch','browserstop' # Mac按键 'command','option','optionleft','optionright', # 辅助按键 'fn', 'f1','f2','f3','f4','f5','f6','f7','f8','f9', 'f10','f11','f12','f13','f14','f15','f16','f17','f18','f19', 'f20','f21','f22','f23','f24' # 不知道什么鬼的字符 'accept','add','apps','clear','convert','decimal', 'divide','execute', 'final','hanguel','hangul','hanja','help','junja', 'kana','kanji','launchapp1','launchapp2','launchmail', 'launchmediaselect','modechange','multiply','nexttrack', 'nonconvert','prevtrack','print','select','separator', 'sleep','stop','subtract','yen', 'volumedown','volumemute','volumeup','playpause','pause'