本文主要介绍GUI自动化
pyautogui是自动化控制键盘和鼠标
pyperclip是个剪贴板,用于纯文本的复制和粘贴
可以直接关闭
pyautogui.PAUSE = 1 # 每个pyautogui函数调用后都会等待1秒钟,而非pyautogui不受影响
将鼠标移动到屏幕左上角,会产生pyautogui.FailSafeException
异常,从而停止程序
pyautogui.FAILSAFE = True # 开启上述功能
xy坐标都是从左上角开始计算,
x是从左到右
y是从上到下
分辨率是屏幕的宽和高有多少像素
width, height = pyautogui.size() # 返回屏幕的宽和高,例如输出:(1920,1080)
# 移动到指定位置
pyautogui.moveTo(100, 200, duration=0.25) # 将鼠标移动到(100,200)位置上,需要0.25秒,不写duration则默认为0(立即移动)
# 相对于当前位置移动
pyautogui.moveRel(100, -100, duration=0.5) # 花费0.5s右移100,上移100的位置
x,y = pyautogui.position()
pyautogui.click(x=211, y=64, clicks=1) # 鼠标左键点击相应位置,clicks为点击次数,默认为左键
pyautogui.click(x=985, y=32, button='right') # 右键点击,button的取值有left,right,middle
pyautogui.doubleClick(x=552, y=346) # 左键双击
pyautogui.rightClick() # 右键双击
pyautogui.middleClick() # 中键双击
点击的实质就是鼠标键按下后松开,即
pyautogui.mouseDown() # 鼠标按下
pyautogui.mouseUp() # 鼠标松开
# 实际上,click()就是封装了上述两个函数
拖动,即为按住一个键不动,然后移动
拖动时,为防止错误,建议使用duration关键字
pyautogui.dragTo(200, 200, duration = 0.2) # 拖动到指定位置
pyautogui.dragRel(-200, 0, durantion = 0.2) # 相对位置拖动
利用pyautogui可进行画图
pyautogui.scroll(200) # 向上滚动200个单位,实际试下滚动的距离
im = pyautogui.screenshot() # im是一个Image对象
im.getpixel((0,0)) # 指定坐标处的像素颜色,得到RGB三元组
// 比较指定坐标处颜色和给定颜色是否相同
pyautogui.pixelMatchesColor(50, 200, (255,255,255)) # 前两个参数是x,y坐标,后面是颜色,相同返回True
// 发现单个图像
pyautogui.locateOnScreen('summit.png') # summit.png为已存在的图像。结果会返回(643, 745, 70, 29),表示屏幕首次发现图像的左x坐标,顶上的y坐标,宽度,高度。若找不到图像,则返回None
// 发现多个图像
list(pyautogui.locateAllOnScreen('summit.png')) # locateAllOnScreen会返回一个Generator对象,可以作为list的参数,返回一个四元元组的列表
// 得到图像的中心坐标
cx,cy = pyautogui.center((643, 745, 70, 29)) # 得到区域中心坐标,(678,759)
pyautogui.typewrite("Hello World",0.25) # 第二个参数为字符输入的间隔时间
pyautogui.typewrite(['a','b','left','c']) # 输入ab向左一格c
两者配合使用
在需要输入中文或英文时,由于输入法影响,常规的键盘输入会比较麻烦,为确保输入结果准确,可使用复制粘贴
pyperclip.copy("中文English") # 复制
pyautogui.hotkey('ctrl', 'v') # 粘贴
参考PyKeyboard
属性(全小写)
键盘键 | 含义 |
---|---|
enter | 回车 |
shfitleft | 左shfit键 |
backspace | 退格键 |
# 按下和抬起
pyautogui.press("down") # 按一下down键
pyautogui.keyDown("shift") # 按下
pyautogui.keyUp("shfit") # 释放
上面已经提到的
pyautogui.hotkey('ctrl','c')