import pyautoguiimport timeimport random# 初始化设置pyautogui.PAUSE = 0.15pyautogui.FAILSAFE = Truepyautogui.CONFIDENCE = 0.7def locate_img(img_path): """定位图片,返回中心坐标或None""" try: return pyautogui.locateCenterOnScreen(img_path) except: return Nonedef rand_offset(): """生成随机偏移量""" return random.randint(-20, 20), random.randint(-20, 20)# 启动校验if input().strip() != 's': exit()flag = Falsewhile True: # 检测红包并点击 red_pkt = locate_img("IMAGES/0.png") if red_pkt and not flag: x, y = rand_offset() pyautogui.click(red_pkt[0]+x, red_pkt[1]+y) flag = True # 检测开红包按钮 open_btn = locate_img("IMAGES/3.png") if open_btn: flag = False x, y = rand_offset() pyautogui.click(open_btn[0]+x, open_btn[1]+y) time.sleep(3) pyautogui.press('esc') time.sleep(2) # 检测手慢了提示 missed = locate_img("IMAGES/man.png") if missed: flag = False pyautogui.press('esc') time.sleep(0.1)
#常用函数:# 移动鼠标pyautogui.moveTo(200,400,duration=2)pyautogui.moveRel(200,500,duration=2)#第一行是将鼠标移动到指定的像素(200,400)位置,第二行代码是将鼠标按照当前点向右移动200px,向下移动400px这个方向移动。正表示右下负表示左上print(pyautogui.position()) # 得到当前鼠标位置;输出:Point(x=200, y=800)# 点击鼠标pyautogui.click(10,10) # 鼠标点击指定位置,默认左键pyautogui.click(10,10,button='left') # 单击左键pyautogui.click(1000,300,button='right') # 单击右键pyautogui.click(1000,300,button='middle') # 单击中间pyautogui.doubleClick(10,10) # 指定位置,双击左键pyautogui.rightClick(10,10) # 指定位置,双击右键pyautogui.middleClick(10,10) # 指定位置,双击中键#拖动到指定位置pyautogui.dragTo(100,300,duration=1)#将鼠标拖动到指定的坐标;duration 的作用是设置移动时间,所有的gui函数都有这个参数,而且都是可选参数;#按方向拖动pyautogui.dragRel(100,500,duration=4) # 第一个参数是左右移动像素值,第二个是上下,#向右拖动100px,向下拖动500px, 这个过程持续 1 秒钟;pyautogui.scroll(300) # 向上滚动300个单位;#屏幕截图im = pyautogui.screenshot()im.save('Screenshots/屏幕截图.png')#屏幕识别import pyautoguipyautogui.PAUSE = 1# 图像识别(一个)btm = pyautogui.locateOnScreen('zan.png')print(btm) # Box(left=1280, top=344, width=22, height=22)# 图像识别(多个)btm = pyautogui.locateAllOnScreen('zan.png')print(list(btm)) # [Box(left=1280, top=344, width=22, height=22), Box(left=25, top=594, width=22, height=22)]#直接获得中心坐标x, y = pyautogui.locateCenterOnScreen('IMAGES/已领取.png')pyautogui.click(x, y)#键盘输出keyDown():模拟按键按下keyUP():模拟按键松开press():模拟一次按键过程,即 keyDown 和 keyUP 的组合typewrite():模拟键盘输出内容#eg:pyautogui.keyDown('shift')pyautogui.press('1')pyautogui.keyUp('shift')#运行上面的代码,如果你的鼠标是放在编辑框中,你会得到一个感叹号pyautogui.typewrite('python', 1)#第一个参数是输出的内容,第二个参数是间隔时间,单位是秒。#运行上面代码,你的编辑器里面就会每隔1秒钟按顺序输出 python 的6个字母。pyautogui.typewrite(['p','y','t','h','o','n','enter'])运行上面代码,编辑器里面就会输出 python 之后换行。pyautogui.hotkey('ctrl','c')#和pyautogui.keyDown('ctrl')pyautogui.keyDown('c')pyautogui.keyUp('c')pyautogui.keyUp('ctrl')# 相同#屏幕截图img = pyautogui.screenshot()region = (300,400,606,500)img = pyautogui.screenshot(region=region)#这可以指定区域