python:pyautogui自动化操作

一、导入模块

import pyautogui

二、常规方法

方法作用
size()返回监视器的大小
onScreen(x, y)如果x,y在屏幕内,则为true

三、鼠标功能

方法作用
moveTo(50,10)将鼠标移至位置(50,10)
moveTo(100, 10, duration=5, tween=pyautogui.easeInOutQuad)用5秒的时间移动到位置(100,10)
moveRel(100, 10)相对当前位置鼠标向右移动100个像素,向下移动10个像素
position()返回鼠标的当前位置
click()鼠标左键单击
doubleClick()鼠标左键双击
tripleClick()鼠标左键三击
click(x=moveToX, y=moveToY, clicks=num_of_clicks, interval=secs_between_clicks, button=‘left’)关键字参数:x坐标,y坐标,点击次数,点击时间间隔,点击的键(button关键字参数可以是’left’, ‘middle’,或’right’)
mouseDown()按住鼠标按钮
mouseUp()放回鼠标按钮
dragTo(300, 400, 2, button=‘left’)鼠标左键用“2秒”拖拽到屏幕“300,400”的位置
dragRel(30, 0, 2, button=‘left’)鼠标左键用“2秒”拖拽到相对当前“右边30”的位置
FAILSAFE = True在执行PyAutoGUI函数前,如果鼠标光标位于屏幕左上角将引发pyautogui.FailSafeException异常(默认启动)
scroll(10)鼠标滚轮上滚10
vscroll()垂直滚动

四、鼠标运动方式

可用方法有moveTo(), move(), dragTo(),和drag(),格式如下:

pyautogui.moveTo(100, 100, 2, pyautogui.easeInQuad)
参数作用
easeInQuad使鼠标光标开始缓慢移动,然后加速到达目的地
easeOutQuad鼠标光标开始快速移动,但在接近目的地时会减慢
easeOutElastic将超过目的地和“橡皮筋”来回,直到它定居在目的地

五、键盘功能

方法作用
typewrite(‘Hello world!\n’, interval=0.25)每个字符间隔0.25秒输入文本
typewrite([‘a’, ‘b’, ‘c’, ‘left’, ‘backspace’, ‘enter’, ‘f1’], interval=secs_between_keys)传递一个键名列表进行操作
press(‘esc’)按键
press([‘left’, ‘left’, ‘left’, ‘left’, ‘left’, ‘left’])连续按键
keyDown(‘shift’)键盘按下
keyUp(‘shift’)键盘释放
hotkey(‘ctrl’, ‘c’)热键按住ctrl的同时按下c
PAUSE = 2.5在PyAutoGUI的所有函数之后添加2.5秒延迟
(默认情况下,暂停设置为0.1秒)
KEYBOARD_KEYS键名的完整列表

六、消息框功能

方法作用
alert(‘text’,‘title’)展示文本和OK按钮
confirm(‘text’,‘title’)展示文本和OK、Cancel按钮
prompt(‘text’,‘title’)让用户输入文本并展示OK、Cancel按钮
(如果用户单击“取消”函数将返回None)
password(‘text’,‘title’, mask=’*’)密码输入框

七、截图功能

方法作用
screenshot()返回图像对象
screenshot(‘foo.png’)返回图像对象,并保存在文件中
locateOnScreen(‘looksLikeThis.png’,confidence=0.9)在屏幕上查找图像返回(左、顶、宽、高)的第一个位置(配合list函数),如果屏幕上找不到图像返回None,添加confidence关键字参数指定函数在屏幕上定位图像的准确性,需要先安装opencv(pip install opencv-python)
locateAllOnScreen(‘looksLikeThis.png’,confidence=0.9)在屏幕上查找图像返回(左、顶、宽、高)所有位置(配合list函数),如果屏幕上找不到图像返回None,添加confidence关键字参数指定函数在屏幕上定位图像的准确性,需要先安装opencv(pip install opencv-python)
locateCenterOnScreen()功能组合locateOnScreen()和center()
pixelMatchesColor(100, 200, (130, 135, 144),tolerance=10)验证单个像素是否与给定像素匹配,tolerance关键字参数指定每个红色、绿色和蓝色值在匹配时的变化程度

八、定位函数

函数作用
locateOnScreen(image, grayscale=False)返回(左、顶、宽、高)坐标。image在屏幕上。如果在屏幕上找不到提高ImageNotFoundException。
locateCenterOnScreen(image, grayscale=False)返回第一个找到的实例中心的(x,y)坐标。image在屏幕上。如果在屏幕上找不到提高ImageNotFoundException。
locateAllOnScreen(image, grayscale=False)返回一个生成器,该生成器为屏幕上的图像生成元组(左、顶、宽、高)。
locate(needleImage, haystackImage, grayscale=False)返回(左、顶、宽、高)坐标needleImage在……里面haystackImage,如果在屏幕上找不到提高ImageNotFoundException。
locateAll(needleImage, haystackImage, grayscale=False)返回生成元组(左、顶、宽、高)的生成器needleImage被发现在haystackImage.
import pyautogui as p
import time

# todo:移动点击
def move_click(self, x, y):
    p.moveTo(x, y)
    p.click(x, y)
# todo:找图点击(一张)
def find_picture_one(self, text):
    while True:
        x = p.locateCenterOnScreen(text, confidence=0.9)
        if x:
            self.move_click(x[0], x[1])
            time.sleep(0.2)
            break
        time.sleep(0.5)
# todo:找图点击(两张)
def find_picture_two(self, text, text1):
    while True:
        x = p.locateCenterOnScreen(text, confidence=0.9)
        y = p.locateCenterOnScreen(text1, confidence=0.9)
        if x:
            self.move_click(x[0], x[1])
            time.sleep(0.2)
            break
        if y:
            self.move_click(y[0], y[1])
            time.sleep(0.2)
            break
        time.sleep(0.5)
# todo:统计图片识别(标志)的数量
def number(self, text):
    lst = []
    x = p.locateAllOnScreen(text, confidence=0.9)
    for i in x:
        lst.append(i[0])

    return len(lst)

九、灰度匹配

你可以通过grayscale=True对定位函数进行稍微加速比(约30%-ISH)。这消除了从图像和屏幕截图的颜色,加快了定位,但可能导致假阳性匹配。

>>> import pyautogui
>>> button7location = pyautogui.locateOnScreen('calc7key.png', grayscale=True)
>>> button7location
(1416, 562, 50, 41)

十、获取RGB颜色

方法1

>>> import pyautogui
>>> im = pyautogui.screenshot()
>>> im.getpixel((100, 200))
(130, 135, 144)

方法2

>>> import pyautogui
>>> pix = pyautogui.pixel(100, 200)
>>> pix
RGB(red=130, green=135, blue=144)
>>> pix[0]
130
>>> pix.red
130

官方文档:https://pyautogui.readthedocs.io/en/latest/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值