赞
踩
PyAutoGUI 是一个 Python 库,用于在桌面应用程序中自动化鼠标和键盘操作。它提供了一组简单而强大的方法,使得开发者可以编写脚本来模拟用户的鼠标点击、键盘输入以及屏幕截图等操作。PyAutoGUI 可以用于自动化重复性任务、测试 GUI 应用程序、创建自定义的自动化工具等场景。
以下是 PyAutoGUI 的一些主要特点:
安装命令:pip install pyautogui
左上角的像素位于坐标 0, 0。如果屏幕的分辨率为 1920 x 1080,则右下角的像素将为 1919, 1079(因为坐标从 0 开始,而不是 1)
0,0 X increases -->
+---------------------------+
| | Y increases
| | |
| 1920 x 1080 screen | |
| | V
| |
| |
+---------------------------+ 1919, 1079
import pyautogui # 获取屏幕尺寸(打印显示的是完整尺寸,操作时,从0开始) screen_size = pyautogui.size() print(screen_size) # 结果:Size(width=1920, height=1080) width, height = pyautogui.size() print(width, height) # 结果:1920 1080 # 获取鼠标当前位置 mouse_position = pyautogui.position() print(mouse_position) # 结果:Point(x=960, y=540) # 判断坐标是否在屏幕范围内(范围内) onScreen(x, y) onscreen = pyautogui.onScreen(100, 200) print(onscreen) # 结果:True # 判断坐标是否在屏幕范围内(范围外) onscreen = pyautogui.onScreen(100, 4000) print(onscreen) # 结果:False
import pyautogui
print('Press Ctrl-C to quit.')
try:
while True:
x, y = pyautogui.position()
positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4)
print(positionStr, end='')
print('\b' * len(positionStr), end='', flush=True)
except KeyboardInterrupt:
print('\n')
import pyautogui
# 将鼠标移动到屏幕坐标 (x=200, y=300) 的位置,移动过程耗时 1 秒钟
pyautogui.moveTo(200, 300, duration=1)
# 相对于当前鼠标位置,向右移动 200 像素,向下移动 500 像素,移动过程耗时 1 秒钟
pyautogui.moveRel(200, 500, duration=1)
# 相对于当前鼠标位置,向左移动 200 像素,向上移动 500 像素,移动过程耗时 1 秒钟
pyautogui.moveRel(-200, -500, duration=1)
click(x=None, y=None, button=‘left’, clicks=1, interval=0.0)
模拟鼠标单击操作。如果指定了 (x, y) 坐标,则会先将鼠标移动到该坐标,然后进行单击操作,默认使用左键单击。clicks 参数指定单击次数,interval 指定单击之间的间隔时间。
import pyautogui # 在屏幕坐标 (x=100, y=100) 的位置点击鼠标左键,点击过程耗时 1 秒钟 pyautogui.click(100, 100, duration=1) # 在屏幕坐标 (100, 100) 的位置点击鼠标左键两次 pyautogui.click(100, 100, clicks=2) # 在屏幕坐标 (100, 100) 的位置点击鼠标左键两次,且点击间隔时间为 3 秒钟 pyautogui.click(100, 100, clicks=2, interval=3) # 在屏幕坐标 (100, 100) 的位置点击鼠标左键,使用 button='left' 指定左键 pyautogui.click(100, 100, button='left') # 在屏幕坐标 (100, 200) 的位置点击鼠标右键,使用 button='right' 指定右键 pyautogui.click(100, 200, button='right') # 在屏幕坐标 (100, 300) 的位置点击鼠标中键,使用 button='middle' 指定中键 pyautogui.click(100, 300, button='middle')
doubleClick(x=None, y=None, button=‘left’, interval=0.0)
模拟鼠标双击操作,参数意义与 click() 方法类似。
import pyautogui
# 在屏幕坐标 (100, 100) 处进行双击操作,使用的是鼠标左键
pyautogui.doubleClick(100, 100)
# 在屏幕坐标 (100, 100) 处进行双击操作,使用的是鼠标右键
pyautogui.doubleClick(100, 100, button='right')
# 在屏幕坐标 (100, 100) 处进行双击操作,使用的是鼠标中键
pyautogui.doubleClick(100, 100, button='middle')
import pyautogui
# 鼠标移动代码...
# 模拟按下鼠标按钮,当前是左键。这个函数会让鼠标一直保持按下状态
pyautogui.mouseDown()
# 释放之前按下的鼠标按钮,使其恢复弹起状态
pyautogui.mouseUp()
import pyautogui
# 将鼠标光标从当前位置拖动到屏幕上的坐标 (95, 50) 的位置(默认使用左键进行拖动,可以使用参数 button='*' 进行修改)
pyautogui.dragTo(95, 50, duration=1)
# 将鼠标光标相对于当前位置向右拖动 500 像素,向下拖动 300 像素,拖动过程持续 1 秒钟
pyautogui.dragRel(500, 300, duration=1)
# 将鼠标光标相对于当前位置向左拖动 500 像素,向上拖动 300 像素,拖动过程持续 1 秒钟
pyautogui.dragRel(-500, -300, duration=1)
import pyautogui
# 鼠标移动代码...
# 向上滚动1000个单位
pyautogui.scroll(1000)
# 向下滚动1000个单位
pyautogui.scroll(-1000)
键盘输入常用的方法:
import pyautogui
# KEY_NAMES 属性获取了所有键盘按键的名称列表
key_names = pyautogui.KEY_NAMES
print(key_names)
# 模拟按下 Windows 键
pyautogui.keyDown('win')
# 模拟释放 Windows 键(如果有按下,一定记得写释放,否则手动操作键盘可能会存在问题)
pyautogui.keyUp('win')
# 演示用的浏览器,鼠标移动到浏览器搜索框点击,软件再进行键盘操作
pyautogui.click(145, 60)
# 模拟逐个字符地输入字符串,并在每个字符输入之间有 0.1 秒的间隔
pyautogui.typewrite('python', interval=0.1)
# 按顺序依次输入列表中的每个元素。'space' 表示空格键
pyautogui.typewrite(['s', 'r', 'f', 'space'], interval=0.2)
# 模拟按下回车键
pyautogui.typewrite(['enter'])
# 模拟按下和释放 Enter 键
pyautogui.press('enter')
# 模拟按下和释放右键箭头键两次,间隔为0.5秒
pyautogui.press('right', presses=2, interval=0.5)
# 模拟按下和释放 Ctrl+shift+esc 组合键,打开任务管理器
pyautogui.hotkey('ctrl', 'shift', 'esc')
import pyautogui import pyperclip # 演示用的浏览器,鼠标移动到浏览器搜索框点击,软件再进行键盘操作 pyautogui.click(145, 60) """示例一""" # 输入 ! pyautogui.keyDown('shift') pyautogui.press('1') pyautogui.keyUp('shift') """示例二""" # 复制文本到剪贴板中 text_to_copy = "Hello, world!" pyperclip.copy(text_to_copy) # 执行粘贴操作 pyautogui.hotkey('ctrl', 'v')
import os import pyautogui # 定义截图存放路径 folder_path = r'C:\Users\admin\Desktop' file_path = os.path.join(folder_path, 'screenshot.png') # 对整个屏幕进行截图 screenshot = pyautogui.screenshot() screenshot.save(file_path) # 对指定区域进行截图 x, y, width, height = 100, 100, 300, 400 region = (x, y, width, height) screenshot = pyautogui.screenshot(region=region) screenshot.save(file_path)
pyautogui.locateOnScreen() 是一个在屏幕上查找指定图片的方法。它会比较屏幕截图与给定图片的相似度,然后返回匹配成功的图片位置。你可以使用这个方法来定位屏幕上的特定图片。
import pyautogui # 在屏幕上查找图像并获取位置信息,并设置匹配的置信度阈值为 0.9(取值范围为 0 到 1)confidence可选 location = pyautogui.locateOnScreen('CSDN.png', confidence=0.9) # 输出位置信息以及位置的左上角坐标 print(location, location[0], location.top) # 结果:Box(left=396, top=385, width=30, height=25) 396 385 # left=396 表示图像左边缘距离屏幕左侧有 396 个像素 # top=385 表示图像的顶部边缘距离屏幕顶部有 385 个像素 # 计算图像位置的中心点坐标 center = pyautogui.center(location) # 输出中心点坐标以及 x 坐标 print(center, center[0]) # 结果:Point(x=411, y=397) 411 # x=411 表示中心点的 x 坐标位于屏幕上的第 411 个像素位置
当前有一个需求,需要在 CSDN 页面对10篇文章进行点赞,那我们应该如何实现这个功能了?
import pyautogui import time import webbrowser def article_likes(): """定位到点赞按钮点击""" count = 10 while count > 0: time.sleep(0.3) try: location = pyautogui.locateOnScreen('CSDN1.png', confidence=0.7) center = pyautogui.center(location) pyautogui.click(center) print("点赞成功!") count -= 1 except TypeError: pyautogui.scroll(-500) print('当前页面没有找到目标,页面下翻...') except Exception as e: print(f"点赞失败:{e}") break if __name__ == "__main__": # 通过默认浏览器,打开CSDN网站 webbrowser.open("https://www.csdn.net/") article_likes()
以上只是介绍了一些常用的方法,如想了解详细的使用方法,请查阅官方文档。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。