GUI(图形用户界面)自动化
1
# GUI(图形用户界面自动化) pyautogui # 安装:cmd: pip install pyautogui import pyautogui, time # 一、基本属性 pyautogui.PAUSE = 1 # 暂停1秒 每执行完一个动作,暂停1秒再执行下一个动作.便于用户观察执行情况 # 把鼠标移动到屏幕左上角会抛出下面的异常:用于终止程序,也可以按ctrl+F2 # pyautogui.FailSafeException # pyautogui.FAILSAFE = False # 禁用上面的异常,默认是启用 # 二、操作鼠标: def mouse(): # 1 获得鼠标位置 p = pyautogui.position() print(p, p.x, p.y) # Point(x=1282, y=781) 1282 781 # 2 移动鼠标 # 用2秒的时候移动鼠标到100,100 pyautogui.moveTo(100, 100, duration=2) # 从当前位置用2秒时间移动200,300像素 pyautogui.moveRel(200, 300, duration=2) # 3 点击鼠标 # 左击: pyautogui.click(1800, 100) # 右击 pyautogui.click(1800, 500, button='right') pyautogui.rightClick(1700, 400) # 等价于上面 # 双击 pyautogui.click(1500, 400, clicks=2) pyautogui.doubleClick(1500, 300) # 等价于上面 # 按下鼠标 pyautogui.mouseDown(1400, 500) # 鼠标释放 pyautogui.mouseUp(1400, 300) # 拖动鼠标 pyautogui.dragRel(-100, 200, duration=3) pyautogui.dragTo(1800, 300, duration=2) # 滚动鼠标 pyautogui.scroll(1000) # pyautogui.hscroll() # pyautogui.vscroll # 三、屏幕操作: def screen(): # 屏幕尺寸 size = pyautogui.size() print(size, size.width, size.height) # Size(width=1920, height=1080) 1920 1080 # 屏幕快照 img = pyautogui.screenshot() print(img) # <PIL.Image.Image image mode=RGB size=1920x1080 at 0x15EDE3E6FA0> # 判断某个像素瓣颜色 # 进一步可判断某一区域的颜色 # 然后可以进行图像识别 # 然后可以做很多很多的事,比如:自动精确点击 # 比如:在传奇游戏自动打怪中,可以记录下某一按钮的区域颜色(按钮位置随时会改变),然后可以精确点击该按钮 # 不稳定的方法:pyautogui.pixelMatchesColor(100, 100, (60, 63, 65)) # True # OSError: windll.user32.ReleaseDC failed : return 0 # 该方法不稳定,不规律的抛出这个错误,不建议使用 # 可以改成: print(pyautogui.screenshot().getpixel((100, 100)) == (60, 63, 65)) # 图像识别:最吊的方法 box = pyautogui.locateOnScreen('QQ.png') # QQ.png是要识别的图像 # 如果匹配多个图像的话返回一个Generator对象 print(box) # Box(left=473, top=5, width=47, height=20) xy = pyautogui.center(box) print(xy) # Point(x=496, y=15) pyautogui.click(xy) # 四 操作键盘 def keyboard(): time.sleep(3) # 装备好要输入的文本文件 pyautogui.click(100, 100) # 把文本文件移动到屏幕左上角 pyautogui.typewrite('hello,I love you,\n123\b456', 0.1) # 自动输入,第二个参娄是输入的间隔时间,可以省略. # \n能换行,\b能退格 # 注意,这是模拟键盘输入,键盘上没有中文,所下面是错误的 # #pyautogui.typewrite('你好,我爱你'),这条代码无法执行,因为键盘上只有ASCII # 如果想输入中文怎么办?把输入法切换成五笔,然后试着运行下面的代码: # pyautogui.typewrite('wq vb ,q ep wq ', 0.1) # 你好,我爱你 pyautogui.typewrite(['a', 'b', 'left', 'left', 'X', 'Y'], 0.2) # 'esc' 表示 ESC键,'enter' 表示 Enter键 'right' 表示 Right键 # print(pyautogui.KEYBOARD_KEYS) # pyautogui.typewrite(['volumeup','volumeup','volumeup','volumeup','volumeup']) # 音量++++ # 键盘键字符串 含义 # 'a', 'b', 'c', 'A', 'B', 'C', '1', '2', '3','!', '@', '#',等等 单个字符的键 # 'enter'(or 'return' or '\n') 回车键 # 'esc' Esc 键 # 'shiftleft', 'shiftright' 左右 Shift 键 # 'altleft', 'altright' 左右 Alt 键 # 'ctrlleft', 'ctrlright' 左右 Ctrl 键 # 'tab'(or '\t') Tab 键 # 'backspace', 'delete' Backspace 和 Delete 键 # 'pageup', 'pagedown' Page Up 和 Page Down 键 # 'home', 'end' Home 和 End 键 # 'up', 'down', 'left', 'right' 上下左右箭头键 # 'f1', 'f2', 'f3',等等 F1 至 F12 键 # 'volumemute', 'volumedown', 'volumeup' # 静音、减小音量、放大音量键(有些键盘没有这些键,但你 # 的操作系统仍能理解这些模拟的按键) # 'pause' Pause 键 # 'capslock', 'numlock', 'scrolllock' Caps Lock,Num Lock 和 Scroll Lock 键 # 'insert' Ins 或 Insert 键 # 'printscreen' Prtsc 或 Print Screen 键 # 'winleft', 'winright' 左右 Win 键(在 Windows 上) # 'command' Command 键(在 OS X 上) # 'option' Option 键(在 OS X 上 # 组合键 pyautogui.keyDown('shift') # 按下不放 pyautogui.press('4') # 按下放开 pyautogui.keyUp('shift') # 放开 # 热键 pyautogui.hotkey('shift', '4') # 五、复习 # 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 对象(参见第 17 章关于 Image 对象的信息)。 # locateOnScreen() 定位图像,没有匹配位置返回None

浙公网安备 33010602011771号