【发布时间】:2020-10-06 03:10:15
【问题描述】:
我创建了一个 Python 应用程序来运行 SAP GUI 的功能测试,但我在启动 SAPGUI 会话时遇到了问题,我使用的是通过 Scripting Tracker 捕获的脚本,但这发生在我获得 SAP 会话之前。
当我打开 SAP Logon 时,我会看到一个包含环境列表的窗口,在这里我可以选择不同的服务器来使用,通常列表中的第一个环境是我需要的,所以我只需向窗口发送一个 enter 即可打开 SAP 正常会话并开始身份验证。
窗口如下所示:
这是我用来打开 SAP 并启动第一个环境的代码:
os.startfile("C:\\Program Files (x86)\\SAP\\FrontEnd\\SAPgui\\saplogon.exe")
shell = win32com.client.Dispatch("WScript.Shell")
shell.SendKeys('{ENTER}')
然后我像这样创建一个 SAP 会话:
sapGuiAuto = win32com.client.GetObject("SAPGUI")
sapApplication = sapGuiAuto.GetScriptingEngine
time.sleep(1)
sapConnection = sapApplication.Children(0)
session = sapConnection.Children(0)
第一个代码块随机运行,就像三次中的一次。
我一直在阅读一些关于 com 对象的内容,我认为我可以从一开始就使用 win32com.client.GetObject("SAPGUI") 但我一直在尝试做这些事情但没有成功:
测试 1
sapGuiAuto = win32com.client.GetObject("SAPGUI")
sapGuiAuto.SendKeys('{ENTER}')
测试 2
sapGuiAuto = win32com.client.GetObject("SAPGUI")
sapApplication = sapGuiAuto.GetScriptingEngine
time.sleep(1)
sapConnection = sapApplication.Children(0)
session = sapConnection.Children(0)
session.findById("wnd[0]").sendVKey(0)
有没有比使用 win32com.client.Dispatch("WScript.Shell") 更好的启动 SAP GUI 的方法? SAP Logon 是否有不同的 ProgId?
谢谢
【问题讨论】: