如何用Python与.exe文件交互:实现点击操作及文件上传
问题分析
你当前使用的subprocess模块仅适用于控制台(CLI)程序的输入输出交互,如果temp.exe是GUI程序,通过标准输入传递文本的方式完全无法触发按钮点击这类GUI操作,这就是代码只打开程序但无后续动作的原因。要实现GUI程序的点击和文件上传,需要使用专门的GUI自动化工具。
解决方案
方案1:PyAutoGUI(适合简单GUI场景,上手快)
PyAutoGUI通过模拟鼠标、键盘操作实现交互,适合控件定位简单的程序。
步骤:
- 安装依赖:
pip install pyautogui pygetwindow
- 示例代码:
import subprocess import pyautogui import pygetwindow as gw import time # 启动目标程序 subprocess.Popen(['temp.exe']) time.sleep(5) # 等待程序完全加载 # 激活程序窗口(替换为你的窗口标题) window = gw.getWindowsWithTitle("Temp程序窗口")[0] window.activate() # 模拟点击"Continue"按钮(坐标需自行获取:运行pyautogui.displayMousePosition()查看实时坐标) pyautogui.click(x=150, y=250) time.sleep(1) # 点击上传按钮 pyautogui.click(x=350, y=450) time.sleep(2) # 在系统文件上传对话框中输入文件路径并确认 pyautogui.typewrite("C:\\你的文件路径\\test.txt") time.sleep(1) pyautogui.press("enter")
注意:
- 坐标需根据实际窗口位置调整,运行
pyautogui.displayMousePosition()可实时显示鼠标坐标 - 延迟时间
time.sleep()需根据程序加载速度调整
方案2:Pywinauto(适合复杂GUI场景,更稳定)
Pywinauto直接识别程序控件(无需依赖坐标),交互更精准可靠,适合复杂GUI程序。
步骤:
- 安装依赖:
pip install pywinauto
- 示例代码:
from pywinauto import Application import time # 启动程序(若为32位程序,需添加backend="win32") app = Application().start("temp.exe") time.sleep(3) # 连接到程序窗口(替换为实际窗口标题) main_window = app.window(title="Temp程序主窗口") main_window.set_focus() # 查看窗口所有控件(运行一次获取控件名称/文本,方便后续定位) # main_window.print_control_identifiers() # 点击Continue按钮(根据控件文本识别) main_window.Button(text="Continue").click() time.sleep(1) # 点击上传按钮 main_window.Button(text="选择文件上传").click() time.sleep(2) # 处理系统文件上传对话框 file_dialog = app.window(title="打开") file_dialog.Edit.set_text("C:\\你的文件路径\\test.txt") file_dialog.Button(text="打开").click()
注意:
- 运行
main_window.print_control_identifiers()可列出窗口所有控件信息,用于精准定位按钮 - 若程序是32位,启动时需指定backend:
app = Application(backend="win32").start("temp.exe")
内容的提问来源于stack exchange,提问作者Anna Misquitta
相关产品推荐
相关产品推荐

