pyautogui可以在不同的平台中使用,windows、mac、linux等均可以使用。pyautogui是纯python语言开发,主要用以模拟用户的鼠标键盘操作。
1、定位元素
1.1、通过xy坐标定位
import pyautogui
loc1 = pyautogui.size() # 得到整个屏幕的尺寸,比如Size(width=1440, height=900)
loc2 = pyautogui.position() # 得到当前鼠标的位置,比如Point(x=674, y=391)
loc3 = pyautogui.click(x=100, y=100, duration=1) # 点击(x=100, y=100)的坐标位置,从当前鼠标位置到(x=100, y=100)位置持续时间是1秒(默认是瞬间完成操作)
1.2、通过图片定位
import pyautogui
pic_loc = pyautogui.locateCenterOnScreen(r"C:\test\test.png") # 返回图片的坐标xy元组
pyautogui.click(pic_loc, duration=1)
pyautogui.locateOnScreen(r"C:\test\test.png") # 返回图片四元组(最左边,最顶,宽,高)
pyautogui.locateAllOnScreen(r"C:\test\test.png") # 寻找相似图片,返回迭代器
pyautogui.locateAll(needImage=None, haystackImage=None) # 返回第1个截图Image对象在haystackImage中的坐标,即返回坐标是四元组(最左边,最顶,宽,高),如果没找到返回None
pyautogui.locate(needImage=None, haystackImage=None) # 返回生成器
2、 鼠标操作
2.1、点击
import pyautogui
pyautogui.click(x=100, y=100, duration=1) # 单击,默认是右击
pyautogui.leftClick(x=100, y=100, duration=1)
pyautogui.rightClick(x=100, y=100, duration=1)
pyautogui.doubleClick(x=100, y=100, duration=1)
pyautogui.middleClick(x=100, y=100, duration=1)
pyautogui.tripleClick(x=100, y=100, duration=1) # 三连击
pyautogui.keyDown("Shift") # 鼠标按住
pyautogui.keyUp("Shift") # 鼠标松开
pyautogui.press("esc")
pyautogui.press(["a", "a", "a"])
pyautogui.hotkey("ctrl", "a") # 按快捷键
pyautogui.typewrite(message="Hello world!") # 输入message,注意只能输入英文字符,不能输入中文字符,如需输入中文字符,需要用新方法pyperclip模块
2.2、拖拽
import pyautogui
pyautogui.drag(xOffset=100, yOffset=100, duration=1) # 同dragRel
pyautogui.dragRel(xOffset=100, yOffset=100, duration=1) # 表示相对当前的鼠标位置的偏移位置(xoffset=100, yoffset=100)
pyautogui.dragTo(x=100, y=100, duration=1) # 拖拽到(100,100)位置
2.3、滚动scoll
控制鼠标滚动的格数
import pyautogui
pyautogui.scroll(6, x=100, y=100) # 移动到坐标(100,100)处,向上滚动6格
pyautogui.hscroll(2, x=100, y=100) # 水平滚动,移动到(100,100)处,向右滚动
pyautogui.vscroll(-3, x=100, y=100) # 垂直滚动,移动到(100,100)处,向上滚动
pyautogui.scroll(6) # 向下滚动6格,在当前鼠标位置处
3、键盘操作
3.1、输入单个键盘字符
import pyautogui
pyautogui.keyDown("Shift")
pyautogui.keyUp("Shift")
pyautogui.press("esc")
pyautogui.press(["a", "a", "a"])
pyautogui.hotkey("ctrl", "a")
pyautogui.typewrite(message="Hello world!")
3.2、输入中文字符
pyautogui不支持输入中文,如果有中文字符应该使用pyperclip模块,pyperclip模块中的copy、paste方法类似ctrl+C, ctrl+V方法,可以复制粘贴包含中文字符的字符串。
import pyperclip
s = r"I love 北京."
pyperclip.copy(s)
pyperclip.paste()
4、截图
import pyautogui
img = pyautogui.screenshot() # 截屏
img.save(r"c:\test\test.png") # 保存截屏图片