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

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

 
  1. pip install pyautogui

  2. pip install pyperclip

  3. pip install pythoncom

  4. pip install win32com

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

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

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

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

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

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

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

 
  1. win32gui.EnumWindows(get_all_hwnd, 0)

  2. for h, t in hwnd_title.items():

  3. if t is not "":

  4. print(([h], [t]))

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

 
  1. def setFront(hwnd):

  2. pythoncom.CoInitialize()

  3. shell = win32com.client.Dispatch("WScript.Shell")

  4. shell.SendKeys('%')

  5. win32gui.SetForegroundWindow(hwnd)

  6. time.sleep(0.2)

  7. # 释放资源

  8. 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,在此基础上进行偏移量计算后进行点击

 
  1. rect = win32gui.GetWindowRect(hwnd)

  2. x = rect[0]

  3. y = rect[1]

  4. w = rect[2] - x

  5. h = rect[3] - y

  6. 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(睡眠秒数)进行设置,避免程序响应过慢引起失效。

学习上

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:开心螺蛳粉】自提!

软件测试面试文档

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

在这里插入图片描述

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。

最后祝大家新年快乐,愿我们在这样一个特殊的时刻,以全新的姿态,迎接挑战,创造辉煌!无论您是在职场上奋斗的精英,还是家庭中默默耕耘的英雄,都要始终相信自己的潜力与能力,勇往直前,不断追求卓越!

  • 21
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值