如何用Python在Windows应用及SAP表单窗口的文本框中输入内容?
实现Windows应用文本输入与SAP表单字段填充的Python方案
一、任意Windows应用文本框输入
方案1:PyAutoGUI(简单易上手,通用场景适配)
PyAutoGUI可通过窗口标题激活应用,模拟键盘输入,也支持图像识别定位特定文本框:
import pyautogui import time # 激活目标应用(以记事本为例) target_window = pyautogui.getWindowsWithTitle("记事本")[0] target_window.activate() time.sleep(0.5) # 预留窗口激活缓冲时间 # 直接输入文本 pyautogui.typewrite("测试输入内容", interval=0.1) # 若需定位特定文本框(通过截图匹配) text_box_pos = pyautogui.locateOnScreen("text_box_screenshot.png") if text_box_pos: pyautogui.click(pyautogui.center(text_box_pos)) pyautogui.typewrite("定位后输入的文本")
方案2:Pywinauto(控件级定位,精准度更高)
你之前觉得Pywinauto不满足需求,大概率是未选择适配的backend(UIA更适配现代Windows应用)。示例:
from pywinauto import Application # 连接到已打开的应用(指定UIA backend) app = Application(backend="uia").connect(title="记事本") # 获取文本框控件 edit_control = app.Notepad.Edit # 输入文本 edit_control.type_keys("Pywinauto控件级输入内容")
二、SAP表单指定字段填充
SAP GUI支持自动化,Pywinauto结合SAP控件标识可精准定位字段,前提是先开启SAP脚本功能(SAP选项→脚本设置→启用脚本):
from pywinauto import Application import time # 连接到已打开的SAP窗口 app = Application(backend="uia").connect(title_re=".*SAP GUI.*") main_win = app.window(title_re=".*SAP GUI.*") # 定位事务码输入框并输入 tcode_field = main_win.child_window(auto_id="wnd[0]/tbar[0]/okcd", control_type="Edit") tcode_field.type_keys("SE16") main_win.type_keys("{ENTER}") # 执行事务跳转 time.sleep(1) # 定位表单内的表名字段并填充 table_field = main_win.child_window(auto_id="wnd[0]/usr/ctxtDATABROWSE-TABLENAME", control_type="Edit") table_field.type_keys("MARA")
提示:控件的auto_id可通过Windows自带的Inspect.exe工具查看,或用SAP自带的脚本录制功能获取控件路径。
备选方案:win32api底层发送消息
如果需要更底层的控制,可通过win32gui和win32api直接给控件发送文本:
import win32gui import win32api import win32con def send_text_to_control(hwnd, text): win32api.SendMessage(hwnd, win32con.WM_SETTEXT, 0, text) # 获取SAP窗口句柄 sap_hwnd = win32gui.FindWindow(None, "SAP窗口标题") # 获取目标字段控件句柄(需提前确认控件类名/层级) field_hwnd = win32gui.FindWindowEx(sap_hwnd, None, "Edit", None) send_text_to_control(field_hwnd, "底层方式填充的文本")
内容的提问来源于stack exchange,提问作者Ardahan Temel
相关产品推荐
相关产品推荐

