You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无CSS/ID/Class/XPath标签,能否实现无GUI后台Web自动化?

可行的老旧应用后台自动化方案

方案1:基于Windows API的Python实现(Windows平台)

老旧Windows桌面应用大多可通过系统API直接操作,无需依赖前台GUI,核心是通过窗口句柄和控件属性(文本、类型、相对位置)定位:

  • 步骤1:用win32gui.FindWindow获取目标应用的主窗口句柄,可通过窗口标题匹配
  • 步骤2:用win32gui.FindWindowEx枚举子控件,通过控件的文本内容、类名(比如按钮类是BUTTON,输入框是EDIT)定位目标控件
  • 步骤3:用win32api.SendMessage给控件发送操作指令:
    • 点击按钮:发送BM_CLICK消息
    • 输入文本:发送WM_SETTEXT消息

示例代码片段:

import win32gui
import win32api
import win32con

# 获取主窗口句柄(替换为你的应用窗口标题)
main_handle = win32gui.FindWindow(None, "老旧应用窗口标题")

# 获取按钮控件句柄(通过父窗口、类名、按钮文本定位)
button_handle = win32gui.FindWindowEx(main_handle, None, "BUTTON", "确认")
# 发送点击消息
win32api.SendMessage(button_handle, win32con.BM_CLICK, 0, 0)

# 获取输入框控件句柄
input_handle = win32gui.FindWindowEx(main_handle, None, "EDIT", None)
# 输入文本
win32api.SendMessage(input_handle, win32con.WM_SETTEXT, 0, "要输入的内容")

方案2:AutoHotkey后台脚本

AutoHotkey对Windows桌面应用的后台操作支持非常友好,无需激活窗口即可操作控件:

  • 用WinGet获取目标应用的窗口ID
  • 用ControlClick实现后台点击,支持通过控件文本、相对坐标或类名定位
  • 用ControlSend给输入框发送文本,不会干扰当前前台操作

示例脚本片段:

; 获取窗口ID(替换为应用窗口标题)
WinGet, window_id, ID, 老旧应用窗口标题

; 后台点击文本为"确认"的按钮
ControlClick, 确认, ahk_id %window_id%

; 给输入框发送文本(可通过类名或坐标定位输入框)
ControlSend, EDIT1, 要输入的内容, ahk_id %window_id%

方案3:终端类老旧应用的pexpect实现

如果目标应用是终端/命令行程序,可使用Python的pexpect库模拟交互,完全无需GUI:

  • 通过匹配终端输出的关键词定位操作节点
  • 自动发送指令、输入文本

示例代码片段:

import pexpect

# 启动目标终端应用
child = pexpect.spawn("老旧终端应用.exe")

# 匹配到"请输入账号:"的提示后输入内容
child.expect("请输入账号:")
child.sendline("你的账号")

# 匹配到"点击确认继续"的提示后发送确认指令(模拟回车或对应按键)
child.expect("点击确认继续")
child.sendline("\r")

注意事项

  • 若控件无文本,可通过控件的相对位置(结合win32gui.GetWindowRect获取坐标)或控件类名的枚举顺序定位
  • Windows API方案需要提前安装pywin32库:pip install pywin32

内容的提问来源于stack exchange,提问作者GABRIEL DE ARAUJO GRECO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 14:52:25