使用pyautogui进行PC用户界面自动化测试

news2024/7/4 4:25:30

目录

1.pyautogui简介及安装

2.pyautogui常见用法

2.1返回所用显示器的分辨率

2.2键盘输入函数

2.3常用函数typewrite()

2.4键盘事件

2.5函数hotkey()

2.6保存屏幕截图

3.常见用法代码汇总

1.pyautogui简介及安装

Pyautogui是一个纯Python的图形化自动化工具,主要功能就是用程序自动控制鼠标和键盘操作,利用它可以实现PC端常见的自动化测试任务. 学习可以参考:PyAutoGUI · PyPI

安装pyautogui模块, 进入CMD命令行窗口,执行命令:

pip install pyautogui

执行结果:

因为我已经安装过该模块, 所以提示 already satisfied:

2.pyautogui常见用法

2.1返回所用显示器的分辨率

# ------------- 返回所用显示器的分辨率 -------------
# 输出:Size(width=1920, height=1080)
print("显示器的分辨率: ", pyautogui.size())
width, height = pyautogui.size()
# 1920 1080
print("屏幕的长和宽:", width, height)

2.2键盘输入函数

# 模拟按键按下77
pyautogui.keyDown("7")
# 模拟按键释放7
pyautogui.keyUp("7")

# 模拟一次按键:调用keyDown()和 keyUp()
pyautogui.press("7")

2.3常用函数typewrite()

# ------------- 函数typewrite()  -------------
# 第一参数是输入内容,第二个参数是每个字符间的间隔时间
pyautogui.typewrite("Happy", 1)
# typewrite 传入单字母的列表;
pyautogui.typewrite(["H", "a", "p", "p", "y"])

2.4键盘事件

# ------------- 键盘事件 --------------
# 按下shift
pyautogui.keyDown("shift")
# 按下 5
pyautogui.press("5")
# 释放 shift
pyautogui.keyUp("shift")

# 键盘特殊顺序输出Happy
pyautogui.typewrite(["H", "p", "p", "y", "left", "left", "left", "a", ])

# 如果我们需要模拟复制的快捷键 ctrl + c
pyautogui.keyDown("ctrl")
pyautogui.keyDown("c")
pyautogui.keyUp("c")
pyautogui.keyUp("ctrl")

2.5函数hotkey()

# ------------- 函数hotkey()  -------------
pyautogui.hotkey("ctrl", "c")

# 复制一行
pyautogui.hotkey("ctrl", "d")

2.6保存屏幕截图

# ------------- 保存屏幕截图  -------------
# 返回屏幕的截图,是一个Pillow的image对象
im = pyautogui.screenshot()
im.save("image_test.png")

截图保存结果:

 

3.常见用法代码汇总

# ======================
# Coding: utf-8
# Author:Mr. Luo
# Date:2022/12/6 20:54
# =======================
import pyautogui

# 自动防故障功能,默认这项功能为True,目的是为了防止程序无法停止。
# 当鼠标的指针在屏幕的最左上方,程序会报错;
pyautogui.FAILSAFE = False

# pyautogui的指令都要暂停一秒,防止键盘鼠标操作太快;
pyautogui.PAUSE = 1

# ------------- 返回所用显示器的分辨率 -------------
# 输出:Size(width=1920, height=1080)
print("显示器的分辨率: ", pyautogui.size())
width, height = pyautogui.size()
# 1920 1080
print("屏幕的长和宽:", width, height)

# ------------- 键盘输入函数  -------------
# 模拟按键按下7
pyautogui.keyDown("7")
# 模拟按键释放7
pyautogui.keyUp("7")

# 模拟一次按键:调用keyDown()和 keyUp()
pyautogui.press("7")

# ------------- 函数typewrite()  -------------
# 第一参数是输入内容,第二个参数是每个字符间的间隔时间
pyautogui.typewrite("Happy", 1)
# typewrite 传入单字母的列表;
pyautogui.typewrite(["H", "a", "p", "p", "y"])

# ------------- 键盘事件 --------------
# 按下shift
pyautogui.keyDown("shift")
# 按下 5
pyautogui.press("5")
# 释放 shift
pyautogui.keyUp("shift")

# 键盘特殊顺序输出Happy
pyautogui.typewrite(["H", "p", "p", "y", "left", "left", "left", "a", ])

# 如果我们需要模拟复制的快捷键 ctrl + c
pyautogui.keyDown("ctrl")
pyautogui.keyDown("c")
pyautogui.keyUp("c")
pyautogui.keyUp("ctrl")

# ------------- 函数hotkey()  -------------
pyautogui.hotkey("ctrl", "c")

# 复制一行
pyautogui.hotkey("ctrl", "d")

# ------------- 保存屏幕截图  -------------
# 返回屏幕的截图,是一个Pillow的image对象
im = pyautogui.screenshot()
im.save("image_test.png")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/66908.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码审计-4 代码执行漏洞

代码执行漏洞 代码执行漏洞利用 ZZZPHP1.6 远程代码执行漏洞分析 漏洞点函数 此处如果能控制$ifstr就可以进行闭合,执行恶意代码 parserIfLabel函数将传入的参数进行正则匹配,当匹配通过时继续往下走 下面并没有对恶意代码内容进行过滤 跟踪parserIfLab…

游戏开发37课 狙击枪 视野问题

首先说一下视野的思路:我们可视化的视野全部都是以扇形显示的,同时为了后期的方便调整我们的视野和距离都必须是动态的。那么我们是不是可以使用度数来控制视野范围,那么我们就需要画出一个扇形。那么我们可以先画出来一个圆 然后在这个圆上面…

Linux安装 vmware workstation

官网下载地址 vmware workstation: Download VMware Workstation Pro 也可以下载提供的安装包。 链接:百度网盘 请输入提取码 提取码:au74 一、Ubuntu 安装 安装构建依赖项,打开您的系统终端并运行以下命令: s…

Linux操作系统中的yum命令

Linux操作系统中的yum命令是大家经常会用到的命令,有着非常重要的作用,但很多朋友依然不太清楚yum命令作用是什么?yum命令有哪些语法和常用命令?接下来我们一起来看看详细的内容介绍。 yum命令全称为Yellow dog Updater, Modified…

ChatGPT生成量化交易策略,真好玩

OK,还有没有更好玩的对 量化策略开发,高质量社群,交易思路分享等相关内容 『正文』 ˇ 最近比较火的OpenAI-ChatGPT,太有意思了。尝试让它写了几个策略,您别说,还真是有模有样。我们来看看吧。 模型一&a…

哈希(开散列、闭散列)-位图-布隆过滤器-哈希切分

文章目录1、哈希概念2、哈希表/散列表(1)哈希函数的设计:(2)(最常用)除留余数法:(3)如何解决哈希冲突?更加合理的设计哈希函数闭散列(…

Java多线程之线程同步机制(锁,线程池等等)

Java多线程之线程同步机制一、概念1、并发2、起因3、缺点二、三大不安全案例1、样例一(模拟买票场景)2、样例二(模拟取钱场景)3、样例三(模拟集合)三、同步方法及同步块1、同步方法2、同步块四、JUC安全类型…

java多线程这一篇就差不多了

java多线程这一篇就差不多了 什么是多线程? 一般被问你对多线程了解多少的时候,你可能不仅仅只需要知道线程怎么创建,你可能需要了解线程的几种创建方式,线程的生命周期,线程池相关,并发安全,…

ADSP-21489的图形化编程详解(4:左右声道音量调节和多通道的输入输出详解)

左右声道音量调节 在直通的前提下,我们加入一个调音量的算法模块,来实现调节输出音量大小的功能。首先拖出来一个音量调节算法模块: 我们这里都是双通道,所以需要对这个音量调节模块进行配置: 连好程序,下…

acwing基础课——Dijkstra

由数据范围反推算法复杂度以及算法内容 - AcWing 常用代码模板3——搜索与图论 - AcWing 基本思想: 迪杰斯特拉(dijkstra)算法是单源最短路径问题的求解方法,它是一个按路径长度递增的次序产生最短路径的算法。单源最短路径就在给出一个固定…

Sqoop数据导出第2关:HDFS数据导出至Mysql内

为了完成本关任务,你需要掌握: 1、数据库( MySQL )建表。 2、HDFS 数据导出至 MySQL 中。 数据库( MySQL )建表 因为这边 Sqoop 不能够帮关系型数据库创建表,所以需要我们自己来创建表。 用命令进入 MySQL 客户端。 mysql -uroot -p123123 -h127.0.0.1 创建数据库…

备忘录模式(Memento)

参考: [备忘录设计模式 (refactoringguru.cn)](https://refactoringguru.cn/design-patterns/mediator) 文章目录一、什么是备忘录模式?二、实现三、优缺点优点缺点四、适用环境一、什么是备忘录模式? 在软件构建过程中,某些对象…

3.ORM实践

文章目录3.1 介绍Spring Data JPAJPA(Java Persistence API)标准HibernateSpring DataSpring Data JPA引入依赖3.2 定义JPA的实体对象常用JPA注解实体主键映射关系常用lombok注解3.3 SpringBucks线上咖啡馆实战项目(1)项目目标&am…

如何利用Java爬取网站数据?

1.Jsoup介绍 - 官网文档:https://jsoup.org - Jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 2. Jsoup快速入门…

TCP--三次握手和四次挥手

原文网址:TCP--三次握手和四次挥手_IT利刃出鞘的博客-CSDN博客 简介 本文介绍TCP的三次握手和四次挥手。即:TCP建立连接和断开连接的过程。 三次握手 流程图 主机 A为客户端,主机B为服务端。 第一次握手 A 发送同步报文段(SYN…

小程序初始创建

1. 注册小程序账号 官网: https://mp.weixin.qq.com/wxopen/waregister?actionstep1 2. 下载小程序 官网: https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 百度网盘(非最新版) https://pan.baidu…

部署SNMP使网管与设备通信,配置关于TCP测试NQA的配置案例

一、部署SNMP 组网需求:通过部署RouterA由NMS网管设备管理用于监控网络是否畅通和业务是否正常。为了保证NMS和RouterA之间有一个数据传输安全、接入方式灵活、链路传输可靠的网络,并且可以实时监控设备的运行情况,网络中的RouterA通过网管实…

Databend 开源周报 #70

Databend 是一款强大的云数仓。专为弹性和高效设计,自由且开源。 即刻体验云服务:https://app.databend.com。 What’s New 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 Features & Improvements Format 更好地检查格…

PCB 二:AD 原理图绘制以及PCB绘制

PCB 二:AD 原理图绘制以及PCB绘制前言(一)资料总结(二)PCB前言 本文简单收集了AD软件在绘制PCB电路板的一些资料,还有遇到的一些问题,并记录一些常用的操作。 (一)资料总结 1【AD】Altium Designer 原理图的绘制 2【AD】Altium Designer P…

飞利浦CT的AI重建技术

原文:AI for significantly lower dose and improved image quality 飞利浦医疗CT的深度学习重建技术。 人工智能可显着降低剂量并提高图像质量概述背景飞利浦CT智能工作流Precise Image 如何训练神经网络深入了解深度学习训练神经网络验证神经网络推断法可以实现快…