用python的pyautogui库制作伪脚本
安装开始全局参数鼠标动作键盘动作屏幕找图事件像素点事件演示帮助文档
安装
pip install pyautogui
另外,某些功能可能需要用到opencv
pip install opencv-python
开始
需要使用管理员模式运行,才能使用pyautogui的键鼠操作功能 import pyautogui Q:为什么叫伪脚本? A:因为pyautogui会操作键鼠进行工作。在它工作期间,你或许不能操作键鼠打扰它的工作。真正的脚本应该是后台全自动运行,模拟键鼠工作,而不会被你的键鼠活动打扰(除非你想关了它),所以说pyautogui制作的是伪脚本。
全局参数
动作阻塞pyautogui.PAUSE = 3 每个pyautogui语句执行完后会等待3秒安全故障pyautogui.FAILSAFE = True 在鼠标指针在屏幕左上角时会抛出pyautogui.FailSafeException的error
鼠标动作
得到鼠标指针当前坐标pyautogui.position()鼠标瞬移到坐标 (100,200)pyautogui.moveTo( 100, 200 )鼠标拖拽到坐标 (100,200)pyautogui.dragTo( 100, 200, button = 'left' )鼠标点击pyautogui.click( x = PointX, y = PointY, clicks = 1, button = 'left' )鼠标双击pyautogui.doubleClick()鼠标按下pyautogui.mouseDown( button = 'right' )鼠标弹起pyautogui.mouseUp( button = 'right' )鼠标竖直滚轮pyautogui.scroll( 10 )正数上滚,负数下滚鼠标水平滚轮pyautogui.hscroll( 10 )正数右滚,负数左滚如不填参数:默认左键,默认当前坐标,默认执行一次
键盘动作
键盘键入字符串pyautogui.write( 'Hello world!', interval=0.25 )每个字符键入间隔0.25秒(或瞬间键入)键盘热键pyautogui.hotkey( 'ctrl', 'shift', 'esc' )按顺序按下,反序弹起键盘点击enter键pyautogui.press( 'enter' )键盘按住F1键pyautogui.keyDown( 'f1' )键盘弹起left方向键pyautogui.keyUp( 'left' )
屏幕找图事件
全屏找图location = pyautogui.locateOnScreen( 'target.png', confidence=0.95 ) 得到第一个符合条件图片的位置数据,找不到时返回None
confidence参数表示精确度,需要安装opencv
grayscale参数,True表示灰度找图,默认False
region = ( 0,0, 300, 400 ) 参数,区域找图
位置数据转坐标x, y = pyautogui.center( location )
全屏找图,全目标locations = locateAllOnScreen( 'target.png' , grayscale=False) 得到所有符合条件的图片位置,返回一个生成器,找不到时返回空生成器,非None。大图中找小图location = locate( 'target.png', 'BigImg.png' ) 得到第一个符合条件图片的位置数据,找不到时返回None大图中找小图,全目标locations = locateAll( 'target.png', 'BigImg.png' ) 得到所有符合条件的图片位置,返回一个生成器,找不到时返回空生成器,非None。
像素点事件
全屏截图并保存img = pyautogui.screenshot( 'my_screenshot.png' ) 目录中会有一张截图
region = ( 0,0, 300, 400 ) 参数,区域截图 得到图片像素点 (100,200) 的RGB属性pix = img.getpixel( (100, 200) )得到当前屏幕像素点 (100,200) 的RGB属性pix = pyautogui.pixel( 100, 200 )像素点比较pyautogui.pixelMatchesColor( 100, 200, pix, tolerance = 10 ) 返回布尔值,表示当前屏幕 (100,200) 的RGB属性是否为 pix
tolerance参数为容差
演示
屏幕识图,并使用鼠标点击的样例。(需要在管理员模式下运行代码)
import pyautogui
pyautogui
.PAUSE
= 3
def find_img(number
):
location
= None
while True:
img
= 'target' + str(number
) + '.png'
location
= pyautogui
.locateOnScreen
( img
, confidence
=0.95 )
if location
:
break
return pyautogui
.center
( location
)
if __name__
== '__main__':
for i
in range(10):
x
,y
= find_img
(i
)
pyautogui
.click
( x
= x
, y
= y
, button
= 'left' )
帮助文档
https://pyautogui.readthedocs.io/en/latest/