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

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ElecNoon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值