一、pyautogui是什么?
pyautogui是一个Python模块,可以模拟用户在屏幕上的鼠标和键盘操作。它可以自动化鼠标和键盘输入,可以用于各种自动化任务,例如GUI测试、自动化数据输入、自动化游戏玩法等。pyautogui提供了一组函数来控制鼠标和键盘,例如移动鼠标、单击、双击、右键单击、按下和释放键等。它还提供了一些额外的功能,例如捕捉屏幕截图、识别颜色和图像等,以及其他一些实用工具,例如获取屏幕尺寸和鼠标位置。
二、使用步骤
1.安装和引入库
1 | pip install pyautogui |
1 | import pyautogui |
2.基本操作
(1)鼠标控制
1 2 3 4 5 6 7 | PyAutoGUI可以模拟鼠标的点击和移动。以下是一些基本操作: moveTo(x, y):将鼠标移动到屏幕上的指定位置。 click(x = None , y = None , button = 'left' ):在指定位置单击鼠标左键、右键或中键。 doubleClick(x = None , y = None , button = 'left' ):在指定位置双击鼠标左键、右键或中键。 rightClick(x = None , y = None ):在指定位置单击鼠标右键。 middleClick(x = None , y = None ):在指定位置单击鼠标中键。 dragTo(x, y, duration = 0.5 ):将鼠标拖动到指定位置。' |
实例:
1 2 3 4 5 | import pyautogui # 将鼠标移动到屏幕中央 pyautogui.moveTo(pyautogui.size()[ 0 ] / 2 , pyautogui.size()[ 1 ] / 2 ) # 在屏幕中央单击鼠标左键 pyautogui.click() |
(2)键盘控制
PyAutoGUI还可以模拟键盘的输入。以下是一些基本操作:
1 2 3 4 | typewrite(message, interval = 0.1 ):将字符串输入到键盘,可以设置键入每个字符的时间间隔。 press(key):按下指定的键。 release(key):释放指定的键。 hotekey( 'ctrl' ,key)::按下组合键 |
以下是一个例子,演示如何将“Hello, world!”字符串键入到计算机上:
1 2 3 4 5 6 7 8 9 10 11 12 | import pyautogui # 将“Hello, world!”字符串键入计算机 pyautogui.typewrite( 'Hello, world!' ) # 模拟按下键盘的A键 pyautogui.press( 'a' ) # 模拟释放键盘的A键 pyautogui.release( 'a' ) #组合键 pyautogui.hotkey( 'ctrl' , 'v' ) |
(3)屏幕截图
PyAutoGUI可以截取屏幕上的图像。以下是一个基本操作:
1 | screenshot():截取屏幕上的图像,并返回PIL图像对象。 |
以下是一个例子,演示如何截取整个屏幕的图像:
1 2 3 4 5 6 7 | import pyautogui # 截取整个屏幕 screenshot = pyautogui.screenshot() # 显示截图 screenshot.show() |
也可以截取指定位置尺寸的图片
1 2 | imag = pyautogui.screenshot(region = ( 0 , 0 , 300 , 400 )) #(x,y,w,e)4个点的位置 imag.save( '1.png' ) #保存位置 |
(4)图片位置识别
PyAutoGUI可以识别图片所在的位置
1 2 3 | img_path = 'location.png' location = pyautogui.locateOnScreen(img_path) print (location) |
但是很多时候图片识别不到,返回None,这个时候就要对识别参数进行设置
confidence 是一个可选参数,表示搜索图像时所需的置信度或准确度。它是一个介于0到1之间的浮点数,表示函数在搜索图像时所需的匹配准确度。值越高,匹配准确度就越高,但搜索速度可能会变慢。值越低,则匹配准确度可能会降低,但搜索速度会更快。
例如,当设置confidence为0.5时,函数将会搜索与给定图像相匹配的区域,并且只有当置信度大于等于0.5时,函数才会返回该区域的位置。因此,confidence的值可以影响函数的性能和准确性,取决于您所需要的搜索结果的精度和速度。
1 | pyautogui.locateOnScreen(confidence = 0.5 ) |
(5) 获取鼠标位置
1 2 3 4 | import pyautogui # 获取鼠标的当前位置 x, y = pyautogui.position() print (f "鼠标当前位置:{x}, {y}" ) |
也可以获取图片上鼠标的位置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import pyautogui import time def get_mouse_postion(): time.sleep( 5 ) print ( '开始获取鼠标位置' ) time.sleep( 1 ) x, y = pyautogui.position() postion = '鼠标坐标带你({},{})' . format ( str (x).rjust( 4 ), str (y).rjust( 4 )) pix = pyautogui.screenshot().getpixel((x, y)) # 获取鼠标所在屏幕点的RGB颜色 postion + = 'RGB:(' + str (pix[ 0 ]).rjust( 3 ) + ',' + str (pix[ 1 ]).rjust( 3 ) + ',' + str (pix[ 2 ]).rjust( 3 ) + ')' print (postion) pyautogui.click(x, y) print (x,y) with open ( '坐标.csv' , 'a' ,encoding = 'utf-8' )as f: f.write( str (x)) f.write( ',' ) f.write( str (y)) f.write( 'n' ) print ( '结束' ) get_mouse_postion() |
(6)其他
保护措施:
python移动鼠标、点击键盘非常快,可能会造成其他可能问题,为了及时中断,PyAutoGUI提供了一个保护措施。当pyautogui.FAILSAFE = True时,把鼠标光标在屏幕左上角,PyAutoGUI函数就会产生pyautogui.FailSafeException异常,中断程序。如果想禁用这个特性,把FAILSAFE设置成False:
1 2 | import pyautogui pyautogui.FAILSAFE = False |
时间延迟
pyautogui.PAUSE 设置延迟,提供页面反映时间,避免页面还没架加载好久执行
1 2 | import pyautogui pyautogui.PAUSE = 2.5 |
一、模块需要
- pyautogui
- pyperclip
1 2 | pip install pyautogui pip install pyperclip |
pyautogu上篇文章已经详细说明了,但是由于输入格式问题,只能输入英文,所以pyperclip 将文本内容复制到粘贴板,然后用pyautogu进行键盘粘贴操作
1 2 3 | txt = 'I love you' pyperclip.copy(txt) pyautogui.hotkey( 'ctrl' , 'v' ) |
三、自动发消息给对象
1.截图操作
分别截取微信PC的图像,以及微信聊天框中的搜索框图片,如下
尽量截图小点,分别保存成1.png,2.png
2.python代码
设置配置
1 2 3 | pyautogui.PAUSE = 1 #每次延迟1秒 pyautogui.FAILSAFE = True wechat_id = 'jiejieluoguo' #你对象的微信账号 |
返回主界面
1 | pyautogui.hotkey( 'win' , 'm' ) |
获取微信图标位置并点击
1 2 3 4 | #获取微信图标位置,并点击 location1 = pyautogui.locateOnScreen( '1.png' , confidence = 0.7 ) print (location1) pyautogui.doubleClick(location1) |
获取搜索框位置,单击输入账号,回车,到聊天界面
1 2 3 4 5 | location2 = pyautogui.locateOnScreen( '2.png' , confidence = 0.7 ) print (location2) pyautogui.doubleClick(pyautogui.center(location1)) pyautogui.typewrite(wechat_id) #写入微信账号 pyautogui.press( 'enter' ) #回车 |
创建一个名为语料的文本,存入你想说的话(可以上网搜一搜相关语录)
读取语录中的内容
1 2 | with open ( '语录' , 'r' ,encoding = 'utf-8' )as f: lists = f.readlines() |
然后循环粘贴回车发送
1 2 3 4 5 | for i in lists: i = i.strip() pyperclip.copy(i) #复制到剪切板 pyautogui.hotkey( 'ctrl' , 'v' ) #粘贴到输入框,回车 pyautogui.press( 'enter' ) |
完整代码“
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | import pyautogui import pyperclip pyautogui.PAUSE = 1 #每次延迟1秒 pyautogui.FAILSAFE = True wechat_id = 'jiejieluoguo' #你女朋友微信账号 pyautogui.hotkey( 'win' , 'm' ) #获取微信图标位置,并点击 location1 = pyautogui.locateOnScreen( '1.png' , confidence = 0.7 ) print (location1) pyautogui.doubleClick(location1) location2 = pyautogui.locateOnScreen( '2.png' , confidence = 0.7 ) print (location2) pyautogui.doubleClick(location2) pyautogui.typewrite(wechat_id) #写入微信账号 pyautogui.press( 'enter' ) #回车 with open ( '语录' , 'r' ,encoding = 'utf-8' )as f: lists = f.readlines() for i in lists: i = i.strip() pyperclip.copy(i) #复制到剪切板 pyautogui.hotkey( 'ctrl' , 'v' ) #粘贴到输入框,回车 pyautogui.press( 'enter' ) |
总结
需要更多了解关于pyautogui知识,可以访问官址https://pyautogui.readthedocs.io/en/latest/
到此这篇关于python自动化神器pyautogui使用步骤的文章就介绍到这了,更多相关python自动化神器pyautogui内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!