【Python】如何使用pyautogui实现exe/GUI程序自动化运行

文章目录

  • 1、目的与实现步骤
  • 1.1目的
  • 1.2实现步骤
  • 1.3必备知识
  • 2、代码实现
  • 3、核心代码解读
  • 4、通过bat启动python脚本
  • 5、通过bat运行python脚本多次(10次)
  • 1、目的与实现步骤

    1.1目的

    实现一个exe程序的自动化运行,一键打开python程序后,然后自动化运行,直到结束

    1.2实现步骤

  • 自动打开一个exe程序
  • 获取exe程序的左上角、右下角坐标
  • 通过微信截图提前获取要操作控件的相对坐标(脚本中需要),结合左上角坐标值,可以获得控件在桌面的绝对坐标
  • 使用pyautogui相关函数实现对控件的自动化操作
  • 自动化执行完毕还有,关闭exe程序
  • 1.3必备知识

  • 知道Windows屏幕坐标系是怎么回事
  • 用微信截图,从窗体左上角截到控件区域某个点,x和y的偏移值即为控件相对于窗体左上角的坐标。
  • 2、代码实现

    说明:
    1.将AutoRun.py和Demo.exe放在同一个文件夹下
    2.Demo.hex在AutoRun.py所在文件夹下的Code文件夹下

    import shutil
    import pyautogui
    import time
    import subprocess
    import win32gui
    import os
    
    
    # 获取当前脚本的绝对路径
    script_abs_path = os.path.abspath(__file__)
    print(f"{script_abs_path}")
    # 获取当前脚本所在目录的绝对路径
    script_dir = os.path.dirname(script_abs_path)
    print(f"{script_dir}")
    # 获取目标文件的绝对路径
    file_abs_path = os.path.join(script_dir, 'Demo.exe')
    print(f"{file_abs_path}")
    # 获取目标文件相对于当前脚本所在目录的相对路径
    # relative_path = os.path.relpath(file_abs_path, script_dir)
    # print(f"{relative_path}")
    # 获取目标文件的绝对路径
    file_abs_path1 = os.path.join(script_dir, 'Code\Demo.hex')
    print(f"{file_abs_path1}")
    
    
    # 1.打开exe程序
    # exe_path ="E:\Desktop\pyautogui-use\Demo.exe"#绝对路径
    exe_path =file_abs_path#通过py文件获取exe文件绝对路径
    subprocess.Popen(exe_path)
    # subprocess.run([exe_path], check=True)
    time.sleep(1)
    # App_hex = "E:\Desktop\pyautogui-use\Code\Demo.hex"#绝对路径
    App_hex=file_abs_path1#通过py文件获取hex文件绝对路径
    
    # 2.获取exe程序窗体左上右下角坐标
    # 获取窗口句柄
    hwnd = win32gui.FindWindow(None, 'Form1')
    # 获取窗口左上角坐标和右下角坐标
    left, top, right, bottom = win32gui.GetWindowRect(hwnd)
    # 输出坐标信息
    print('窗口左上角坐标:({}, {})'.format(left, top))
    print('窗口右下角坐标:({}, {})'.format(right, bottom))
    
    #3.点击按钮等一些列操作
    #【1】点击Connect按钮
    button_x =left+80#左上角x值加控件相对坐标
    button_y = top+274#左上角y值加控件相对坐标
    # 移动鼠标到按钮位置
    pyautogui.moveTo(button_x, button_y)
    # 点击按钮
    pyautogui.click()
    print('点击按钮:Connect')
    time.sleep(2)
    
    # 【2】点击选择hex文件的按钮
    button_x =left+972
    button_y = top+113
    # 移动鼠标到按钮位置
    pyautogui.moveTo(button_x, button_y)
    # 点击按钮
    pyautogui.click()
    time.sleep(2)
    print('点击按钮:选择hex')
    #在文件选择框中填入hex文件的路径
    pyautogui.typewrite(App_hex)
    # 模拟按下 Enter 键
    pyautogui.press('enter')
    
    # 【3】设定执行次数
    button_x =left+789
    button_y = top+229
    # 移动鼠标到按钮位置
    pyautogui.moveTo(button_x, button_y)
    # 点击按钮,定位到次数输入框
    pyautogui.click()
    time.sleep(2)
    print('定位到次数输入框')
    # 选中输入框中所有内容Ctrl+A
    pyautogui.hotkey('ctrl', 'a')
    # pyautogui.press('backspace')#正向删除
    # time.sleep(2)
    # pyautogui.press('delete')#反向删除
    time.sleep(1)
    # 在输入框中写入新次数100
    pyautogui.typewrite("100")
    print('输入次数:100')
    # 模拟按下 Enter 键
    pyautogui.press('enter')
    
    
    # 【4】点击Start按钮
    button_x =left+500
    button_y = top+230
    # 移动鼠标到按钮位置
    pyautogui.moveTo(button_x, button_y)
    # 点击按钮
    pyautogui.click()
    print('点击按钮:Start')
    time.sleep(150)
    
    # 【5】执行完毕后,点击Disconnect按钮
    button_x =left+198
    button_y = top+271
    # 移动鼠标到按钮位置
    pyautogui.moveTo(button_x, button_y)
    # 点击按钮
    pyautogui.click()
    print('点击按钮:Disconnect')
    time.sleep(2)
    
    # 【6】点击退出exe的按钮
    button_x =left+989
    button_y = top+17
    # 移动鼠标到按钮位置
    pyautogui.moveTo(button_x, button_y)
    # 点击按钮
    pyautogui.click()
    print('点击按钮:关闭exe程序')
    time.sleep(1)
    pyautogui.press('enter')
    time.sleep(2)
    

    3、核心代码解读

    import pyautogui # 用来自动化操作控件
    import time #用来延时
    import subprocess #用来打开exe程序
    import win32gui #用来获取exe程序窗体左上角坐标
    import os #用来获取文件的绝对地址
    

    4、通过bat启动python脚本

    rem 方法一
    @echo off
    set PYTHON_PATH="D:\\Program Files\\Python\Python39\\python.exe"
    %PYTHON_PATH% AutoRun.py
    rem pause
    
    rem 方法二
    rem @echo off
    rem E:
    rem cd E:\Desktop\pyautogui-use
    rem "D:\Program Files\Python\Python39\python.exe" AutoRun.py
    rem pause
    

    5、通过bat运行python脚本多次(10次)

    @echo off
    setlocal enabledelayedexpansion
    set PYTHON_PATH="D:\\Program Files\\Python\Python39\\python.exe"
    set SCRIPT_PATH=AutoRun.py
    set COUNT=0
    
    :loop
    if !COUNT! lss 10 (
        echo Running iteration !COUNT!
        %PYTHON_PATH% !SCRIPT_PATH!
        set /A COUNT=!COUNT!+1
        goto loop
    )
    endlocal
    rem pause
    

    作者:ElecNoon

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【Python】如何使用pyautogui实现exe/GUI程序自动化运行

    发表回复