Python中pyautogui库的使用方法汇总

yizhihongxing

Python中pyautogui库的使用方法汇总

pyautogui是Python中一个非常实用的自动化工具库,能够模拟鼠标和键盘操作,实现自动化的任务流程。本篇文章将对pyautogui库的使用方法进行详细讲解,包含以下内容:

  • 安装pyautogui库
  • 基本操作:鼠标移动、点击、拖拽、键盘输入等
  • 屏幕控制:屏幕截图、获取像素RGB值、查找图像位置等
  • 使用案例:自动化登录网站,自动填写表单

安装pyautogui库

使用pip可以轻松安装pyautogui库,只需在命令行中输入以下命令即可:

pip install pyautogui

基本操作

鼠标操作

在pyautogui中,鼠标相关的操作有moveTo(x, y)、click(x, y, button='left')、rightClick(x, y)、dragTo(x, y, duration=0.0, button='left')、scroll(clicks=1)等方法。这些方法分别实现了移动鼠标、点击、右击、拖拽、滚动等操作。其中,x和y分别为屏幕上的像素坐标,left表示左击、right表示右击。

示例代码1:移动鼠标并左击

import pyautogui

# 移动到屏幕坐标(300, 300)的位置
pyautogui.moveTo(300, 300)

# 左击
pyautogui.click()

键盘操作

在pyautogui中,键盘相关的操作有keyDown(key)、keyUp(key)、press(key)等方法,分别实现按下、释放和输入键盘按键操作。其中,key表示按键的名称或键码,可以参考键盘按键名称和键码的对照表

示例代码2:输入Hello World!

import pyautogui

# 按下Shift键
pyautogui.keyDown('shift')

# 按下H键
pyautogui.press('h')

# 松开Shift键
pyautogui.keyUp('shift')

# 输入ello World!
pyautogui.typewrite('ello World!')

屏幕控制

屏幕截图

在pyautogui中,截屏相关的操作有screenshot()、screenshot(region=None)等方法。其中,screenshot()将会截取整个屏幕,screenshot(region=box)将会截取指定区域的屏幕,box是一个4元组,分别是(left, top, width, height),表示左上角的x、y坐标和宽度、高度。

示例代码3:截屏并保存为文件

import pyautogui

# 截取整个屏幕
im = pyautogui.screenshot()

# 保存为文件
im.save('screenshot.png')

获取像素RGB值

在pyautogui中,获取像素RGB值的操作有pixel(x, y)、pixelMatchesColor(x, y, color, tolerance=0)等方法。其中,pixel(x, y)返回屏幕上像素点的RGB值,pixelMatchesColor(x, y, color, tolerance=0)返回像素点的颜色是否匹配,color是tuple类型的值,表示RGB值。

示例代码4:获取屏幕(100, 200)处的像素RGB值及匹配颜色

import pyautogui

# 获取RGB值
r, g, b = pyautogui.pixel(100, 200)

# 显示RGB值
print(r, g, b)

# 检查颜色是否匹配
isMatch = pyautogui.pixelMatchesColor(100, 200, (r, g, b), tolerance=10)
print(isMatch)

查找图像位置

在pyautogui中,查找图像位置的操作有locateOnScreen(image, grayscale=False, confidence=0.999)、locateCenterOnScreen(image, grayscale=False, confidence=0.999)等方法。其中,image表示需要查找的图像,grayscale表示是否以灰度图模式来匹配,confidence为匹配的置信度,取值范围为0~1。

示例代码5:查找某张图像及其中心位置

import pyautogui

# 从屏幕上查找某张图像
location = pyautogui.locateOnScreen('image.png')

# 如果找到了,就将鼠标移动到图像中心
if location:
    center = pyautogui.locateCenterOnScreen('image.png')
    pyautogui.moveTo(center)
    pyautogui.click()

使用案例

下面,我们将利用pyautogui库实现自动化登录网站和自动填写表单的功能。

自动化登录网站

实现自动化登录网站,需用到鼠标点击和键盘输入操作。

示例代码6:自动化登录某个网站(假设该网站的登录框在屏幕底部中央)

import pyautogui

# 移动到登录框位置
pyautogui.moveTo(pyautogui.size().width/2, pyautogui.size().height - 100)

# 点击
pyautogui.click()

# 输入用户名
pyautogui.typewrite('username')

# 切换到下一输入框
pyautogui.press('tab')

# 输入密码
pyautogui.typewrite('password')

# 切换到登录按钮
pyautogui.press('tab')
pyautogui.press('tab')

# 点击登录
pyautogui.press('enter')

自动填写表单

实现自动填写表单,需用到键盘输入操作和屏幕截图操作。

示例代码7:自动填写某个表单(假设该表单有3个输入框,需要依次填入姓名、性别和年龄)

import pyautogui

# 打开表单页面
pyautogui.typewrite('chrome\n')
pyautogui.typewrite('http://www.example.com/form.html\n')

# 等待页面加载完成
time.sleep(3)

# 截取屏幕中表单的区域
form_box = (100, 100, 600, 400)  # (left, top, width, height)
form_im = pyautogui.screenshot(region=form_box)

# 读取姓名输入框的坐标
name_box = (100, 100, 400, 50)  # (left, top, width, height)
name_im = form_im.crop(name_box)
name_location = pyautogui.locateOnScreen(name_im)

# 如果找到了姓名输入框,就填入姓名
if name_location:
    name_center = pyautogui.locateCenterOnScreen(name_im)
    pyautogui.moveTo(name_center)
    pyautogui.click()
    pyautogui.typewrite('张三')

# 读取性别输入框的坐标
sex_box = (100, 200, 400, 50)  # (left, top, width, height)
sex_im = form_im.crop(sex_box)
sex_location = pyautogui.locateOnScreen(sex_im)

# 如果找到了性别输入框,就填入性别
if sex_location:
    sex_center = pyautogui.locateCenterOnScreen(sex_im)
    pyautogui.moveTo(sex_center)
    pyautogui.click()
    pyautogui.typewrite('男')

# 读取年龄输入框的坐标
age_box = (100, 300, 400, 50)  # (left, top, width, height)
age_im = form_im.crop(age_box)
age_location = pyautogui.locateOnScreen(age_im)

# 如果找到了年龄输入框,就填入年龄
if age_location:
    age_center = pyautogui.locateCenterOnScreen(age_im)
    pyautogui.moveTo(age_center)
    pyautogui.click()
    pyautogui.typewrite('28')

以上就是pyautogui库的使用方法汇总,包含了常用的操作方法和两个实用的自动化操作案例,希望能对大家的自动化测试或自动化操作有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中pyautogui库的使用方法汇总 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Python 从文件中读取字符串,保留要打印的变量

    【问题标题】:Python read strings from file, preserving variables to be printedPython 从文件中读取字符串,保留要打印的变量 【发布时间】:2023-04-04 02:46:02 【问题描述】: 我正在制作一个 Python 脚本,它将从列表中随机选择一个响应。 为了填充这个列表,我想从文…

    Python开发 2023年4月6日
    00
  • 解决vscode python print 输出窗口中文乱码的问题

    当你在VSCode 中使用 Python 编写代码时,如果输出的内容包含中文,有可能会出现乱码的情况。这是因为 VSCode 的输出窗口默认使用 utf-8 编码,而 Windows 的终端默认使用 gbk 编码。下面给出两种解决方法: 方法一:设置 VSCode 输出窗口编码 在 VSCode 的配置文件中设置输出窗口的编码为 utf-8 即可解决乱码的问…

    python 2023年5月20日
    00
  • 在Python中如何让字典保持有序

    在Python 3.7之前,字典是无序的,但是从Python 3.7开始,字典就可以保持插入顺序。在此之前,可以使用collections模块中的OrderedDict类来创建有序字典。下面是在Python中如何让字典保持有序的完整攻略: 方法一:使用Python 3.7及其以上版本的字典 在Python 3.7及其以上版本中的字典是有序的,可以通过dict…

    python 2023年5月13日
    00
  • Python遍历zip文件输出名称时出现乱码问题的解决方法

    Python遍历zip文件输出名称时出现乱码问题的解决方法 在Python中,我们可以使用ZIpFile库对zip文件进行读取和操作。然而在中文环境下,有时候在遍历zip文件获取文件名称时会出现乱码问题。本文将讲解如何解决该问题。 1. 问题分析 我们首先看一下出现乱码的现象,假设我们有一个名为中文.zip的zip文件,其中包含了一个名为中文.txt的文本文…

    python 2023年5月20日
    00
  • Springboot中动态语言groovy介绍

    SpringBoot中动态语言Groovy介绍 Groovy是一种基于JVM的动态语言,能与Java无缝配合使用。SpringBoot支持在应用程序中使用Groovy,我们可以使用Groovy进行SpringBoot开发和部署。在本文中,我们将详细讲解SpringBoot中动态语言Groovy的使用方法和技巧。 Groovy安装 首先我们需要安装Groovy…

    python 2023年6月3日
    00
  • Python基本运算几何运算处理数字图像示例

    Python基本运算、几何运算、处理数字图像示例 Python是一种高级编程语言,它具有简单易学、功能强大、可扩展性强等特点。本文将介绍Python中的基本运算、几何运算和数字图像处理,并提供两个示例说明。 1. 基本运算 Python中的基本运算包括加、减、乘、除、取模、幂等运算。这些运算符可以用于数字、字符串、列表、元组等数据类型。 1.1 数字运算 a…

    python 2023年5月14日
    00
  • python 基本结构语句(函数和模块)

    Python 是一种高级编程语言,具有简单、易读、简洁的语法,广泛用于数据处理、科学计算、Web应用程序等领域。本文将重点讲解 Python 中的基本结构语句,包括函数和模块。 函数 函数是 Python 中一种重要的编程结构,可以将程序的功能分解为小块,使程序更易于阅读和维护。在 Python 中,我们可以使用 def 关键字来定义函数,函数的基本语法如下…

    python 2023年5月30日
    00
  • 导入tensorflow时报错:cannot import name ‘abs’的解决

    当在导入Tensorflow时遇到“cannotimportname’abs’”错误时,通常是因为在导入Tensorflow时,发现了不兼容版本的Numpy库,导致错误发生。要解决这个问题,我们可以采取以下步骤: 确认Numpy库的版本是否兼容。Tensorflow文档中指定了与其结合使用的Numpy版本,我们可以访问Tensorflow官网,查找文档并确认…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部