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

    总结:

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

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

    软件测试面试文档

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

     

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

  • 相关阅读:
    遗传工具箱记录
    python gui(六)全局设定
    el-date-picker与el-time-picker的时间格式设置
    视频基础知识
    布控是什么意思
    深度学习入门(五十六)循环神经网络——循环神经网络RNN
    Golang跨平台UI框架之Wails(一)
    vscode中使用luaide-lite插件断点调试cocos2dx-lua
    利用无线模拟量装置完成热电厂蒸汽流量远程采集
    NIO基础
  • 原文地址:https://blog.csdn.net/2301_79535544/article/details/139993885