一种基于Python的自动化操作流程解决方案

发表于:2023-11-13 10:19

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:杨康    来源:51Testing软件测试网原创

  今天跟大家分享一套自动化操作流程解决方案,基于Python语言,涉及pyautogui、pyperclip、pythoncom、win32com依赖包。安装命令为:
  pip install pyautogui
  pip install pyperclip
  pip install pythoncom
  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,将其进行置顶,下图为获取到的当前所有应用程序句柄列表。
  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是待模拟点击功能按钮区域截图,以下两种方法均可实现。
  方法1:图像识别方法
  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)
  方法2:相对坐标方法
  获取当前程序的坐标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 + 相对偏移位置)
  下图为点击应用程序界面的相对坐标位置实现鼠标点击启动。
本文节选自第七十四期《51测试天地》
一种基于Python的自动化操作流程解决方案》一文
想继续阅读全文或查看更多精彩内容,请点击下载:
  版权声明:本文出自《51测试天地》第七十四期。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号