Python自动化操作:简单、有趣、高效!解放你的工作流程!

今天跟大家分享一套自动化操作流程解决方案,基于Python语言,涉及pyautogui、pyperclip、pythoncom、win32com依赖包。安装命令为:

pip install pyautoguipip install pyperclippip install pythoncompip install win32com

pyautogui 是一个自动化控制鼠标和键盘的 Python 模块,使用 PyAutoGUI 执行的一些常见任务:移动鼠标光标、单击鼠标(左键、右键和中键单击)、截取屏幕截图、在屏幕上查找图像或模式、获取当前鼠标位置等等。

pyperclip 可以在不同应用程序之间复制和粘贴文本数据,有一些应用程序界面不支持按键的Ctrl C和Ctrl V操作,可以借此实现。

pythoncom 允许Python程序与COM对象进行交互,实现COM对象的创建、访问、调用(例如访问 Microsoft Office 文档、操作 Windows 注册表等),这对于与Windows上的各种应用程序和服务进行集成和自动化非常有用。

win32com 和pythoncom模块一样,但提供了更高级的功能和更容易使用的接口。

我将基于上述4个模块,讲述Windows系统下某应用程序的自动化操作流程的实现步骤:

自动化操作流程类似于RPA机器人流程自动化软件,首先需要进行一遍人工操作流程,把关键点击节点或重要操作步骤截图保存,基于这一系列截图照片和应用程序界面进行图片比对、相对坐标位置点击实现鼠标点击或者键盘输入,达到自动化操作。

但是在模拟操作过程中,需要应用程序始终为置顶状态,下面程序可以获取到当前电脑打开的所有应用程序句柄,找到待操作对象的应用程序句柄hwnd,将其进行置顶,下图为获取到的当前所有应用程序句柄列表。

win32gui.EnumWindows(get_all_hwnd, 0)
for h, t in hwnd_title.items():
if t is not "":
print(([h], [t]))

在这里插入图片描述

应用程序置顶可以有效避免了新闻或者广告弹窗覆盖了操作区域,发生误触,下面程序是实现句柄为hwnd的应用程序置顶。

def setFront(hwnd):
pythoncom.CoInitialize()
shell =                        win32com.client.Dispatch("WScript.Shell")
shell.SendKeys('%')
win32gui.SetForegroundWindow(hwnd)
time.sleep(0.2)
# 释放资源
pythoncom.CoUninitialize()

进入应用程序界面,接下来在待操作区域进行图像识别,得到模拟点击的位置或者相对坐标位置,以下示例中im1是应用程序界面截图,img是待模拟点击功能按钮区域截图,以下两种方法均可实现:

01 图像识别

im1 = pyautogui.screenshot(region=(截图区域左上角X轴坐标, 截图区域左上角Y轴坐标,截图区域的宽度, 截图区域的高度))

#在im1区域内定位img图像 grayscale=True开启灰度识别 confidence=0.7相似度匹配阈值

loc = pyautogui.locate(img, im1, grayscale=True, confidence=0.7)

#点击待操作功能按钮截图中心坐标

x, y = pyautogui.center(loc)

setFront(hwnd)

pyautogui.click(x, y)

02 相对坐标

获取当前程序的坐标x、y及其宽度w、高度h,在此基础上进行偏移量计算后进行点击

rect = win32gui.GetWindowRect(hwnd)
x = rect[0]
y = rect[1]
w = rect[2] - x
h = rect[3] - y
setFront(hwnd)

pyautogui.click(x + 相对偏移位置, y + 相对偏移位置)

下图为点击应用程序界面的相对坐标位置实现鼠标点击启动:

图片

如果应用程序区域正在响应过程,还没有出现待点击功能区域,固定的等待时间可能出现意外,所以获取函数的返回值loc = pyautogui.locate(img, im1, grayscale=True, confidence=置信度),该函数在没有匹配到待操作功能区域截图时,将会返回None,下面程序是基于函数的返回值None判断是否出现某个功能按钮,实现停等程序响应:

#等待img出现在程序界面,默认等待30秒

def waitOccur(img, n=30):

for i in range(n):

m1 = pyautogui.screenshot(region=(截图区域左上角X轴坐标, 截图区域左上角Y轴坐标,截图区域的宽度, 截图区域的高度))

loc = pyautogui.locate(img, im1, grayscale=True, confidence= 置信度)

locx, locy = getLoc(img)

if locx != 0 and locy != 0:

return True

time.sleep(1)

return False

下图为等待应用程序内某个待点击区域出现后,点击对应位置,实现操作。

图片

上述内容为自动化流程的几个关键操作函数,后续的功能操作,也是这几种关键方法实现,读者们自行实现定制化操作,但在实现过程有以下注意事项:

1.在实现过程中,建议每一次鼠标模拟点击前进行一次应用程序置顶操作setFront(hwnd);

2.建议点击间隔秒数控制较大一些,使用time.sleep(睡眠秒数)进行设置,避免程序响应过慢引起失效。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

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

相关文章

【python入门】循环语句

文章目录 1. for 循环2. while 循环3. break 和 continue 语句4. else 子句5. 循环控制语句6. 列表推导式7. 循环中的异常处理8. 循环的高级用法 1. for 循环 for 循环通常用于遍历序列(如列表、元组、字典、集合、字符串)或者迭代器。for 循环可以自动…

病理性不对称引导的渐进学习用于急性缺血性脑卒中梗死分割| 文献速递-先进深度学习疾病诊断

Title 题目 Pathological Asymmetry-Guided Progressive Learning for Acute Ischemic Stroke Infarct Segmentation 病理性不对称引导的渐进学习用于急性缺血性脑卒中梗死分割 01 文献速递介绍 中风已经成为第二大致命疾病,大约70%的中风是缺血性的。众所周知…

Kafka官方提供的RoundRobinPartitioner出现奇偶数据不均匀

Kafka官方提供的RoundRobinPartitioner出现奇偶数据不均匀 参考: https://www.cnblogs.com/cbc-onne/p/18140043 使用RoundRobinPartitioner /** Licensed to the Apache Software Foundation (ASF) under one or more* contributor license agreements. See the…

如何提高网页加载速度?

如何以闪电般的速度加载网站? 看看这 8 个提升前端性能的技巧: 01 压缩 在传输之前压缩文件可以减少其大小,减少需要传输的数据量,从而加快加载时间。 实现方法: Gzip/Brotli 压缩: 配置你的 web 服务器&#xff08…

[Linux] 历史根源

UNIX系统: 1969年,由贝尔实验室的K.Thompson和D.M.Ritchie为PDP-7机器编写的一个分时操作系统, 最初使用汇编语言编写, 后来1972年C语言出世以后,二人由使用C写了UNIX3, 此后UNIX大为流行开来 UNIX流派树&a…

一个简单的盐值md5破解

声明,仅供学习,请勿用于非法用途! 首先需要获取到salt值和密文,自己有字典 我是做vulhub的cmsms复现的时候,用他的poc跑出来密文和盐值,发现这个是做了字段拼接再加密,也就是加盐了&#xff0c…

华为交换机的堆叠-Stack配置(基于业务口普通线缆的堆叠配置)

不想看原理请跳过一、二、三、四, 直接到配置五,干完活有时间在慢慢看原理。 一、什么是堆叠-Stack 指将多台交换机通过堆叠线缆连接在一起,逻辑上变成一台交换设备,作为一个整体参与数据转发。即:1 1 一 二、堆叠…

ChatGPT 宣布终止对中国提供 API 服务? 来用国产大模型吧

国产大模型 阿里云 将为 OpenAI API 用户提供更具性价比的中国大模型替代方案,同时宣布中国开发者提供 2200 万免费 tokens 和专属迁移服务 硅基流动 SiliconCloud 免费开放 7 款大模型 智谱 AI 正式推出 OpenAI API 用户特别搬家计划,同时还会为开…

如何通过待办工具提升个人效率 减轻压力提升效率的待办app

在快节奏的现代社会中,工作任务繁重,人们的压力日益增大。为了减轻压力并提升工作效率,我们急需找到一种有效的方法来管理日常任务。幸运的是,随着科技的进步,各种新兴工具应运而生,为我们提供了便捷的解决…

qt报错:“QtRunWork”任务返回了 false,但未记录错误。

qt报错:“QtRunWork”任务返回了 false,但未记录错误。 说明情况一 说明 这个报错可能的原因有很多,这里只写一种,以后遇到再进行补充。 情况一 如果 Q_OBJECT 宏未正确处理,通常会出现类似的错误。 要使用信号与槽…

3.优化算法之二分查找1

二分查找简介 1.特点 最简单最恶心,细节最多,最容易写出死循环的算法 2.学习中的侧重点 1)算法原理 数组有序的情况 2) 模板 不要死记硬背 ->理解之后再记忆 1.朴素的二分模板 2.查找左边界的二分模板 3.查找右边界的二分模板 …

24年了 直播带货的未来如何?

32 个国家在取消电商, 那我国的电商呢,首先电商是不会被取缔的。直播电商会被严格的控制,比如有一家饼店,它线下的销售是 3000 万,线上抖音的销售是 5, 000 万。 这一类型小而精又专业的品牌企业,未来在抖…

java图片处理(图片逆时针旋转90度,图片剪裁截取)

base64字符串转化成图片给定坐标点,以及宽高范围,然后截取图片图片逆时针旋转90度 import org.apache.commons.codec.binary.Base64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.StringUtils; import j…

Sensei for Mac:一键清理,系统如新!

Sensei for Mac是一款高效且易于使用的系统优化清理工具。它能够深入Mac系统内部,智能识别并清理无用的缓存文件、临时文件、垃圾邮件等,从而释放磁盘空间,提升系统性能。无论是日常使用还是长时间工作后,Sensei都能帮助你的Mac恢…

鸿蒙 HarmonyOS NEXT星河版APP应用开发阶段三-热门组件使用及案例

一、样式和结果重用 介绍 /* Extend:扩展组件(样式、事件) Styles: 抽取通用数据、事件 Builder:自定义构建函数(结构、样式、事件) */Extend /* 作用:扩展组件(样式、事件) 场景:…

实现异步操作sleep

这两个函数 sleep 和 delay 都是使用 JavaScript 的 Promise 和 setTimeout 来实现异步操作的。不过它们的功能略有不同,下面我为你详细解释: sleep 函数 sleep 函数接受一个秒数 seconds,并返回一个 Promise,该 Promise 在指定的…

封装图片占位图组件

<laze-image class="image" :url="item.image" :game_name="item.game_name" :placeholder="require(@/static/images/common/placeholder.png)"></laze-image> 1.通过调用组件实现 先加载预览图片,再加载真实的图片 2…

Vscode连接远程服务器中的docker容器

配置远程docker容器 docker run -itd --name ubuntu-hkx --mount typebind,source/home/huangkx/docker,target/docker -p2001:22 ubuntu-hkx-image 进入docker docker exec -it ubuntu-hkx bash docker安装ssh 安装完成后启动 service ssh start 配置key 把本地的~/.ssh…

中国杀出全球首个烹饪大模型

什么&#xff1f;烹饪也有大模型&#xff1f;&#xff01; 没有听错&#xff0c;这就是国产厨电龙头老板电器最新发布——“食神”大模型。 数十亿级行业数据&#xff0c;数千万级知识图谱加持&#xff0c;据称还是全球首个。 它能为每个人提供个性化量身定制的解决方案&…

Kubernetes面试整理-如何配置和使用Service, Ingress?

在 Kubernetes 中,Service 和 Ingress 是用于管理和暴露应用程序的网络访问的主要资源。以下是如何配置和使用 Service 和 Ingress 的详细指南: Service Service 是一种抽象,用于定义一组 Pod 的逻辑集合,并提供一种访问这些 Pod 的策略。Service 可以使应用程序内部或外部…