【问题标题】:Starting SapGui app from python before scripting window在脚本窗口之前从 python 启动 SapGui 应用程序
【发布时间】: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?

谢谢

【问题讨论】:

    标签: python win32com sap-gui


    【解决方案1】:

    我不懂 Python,但您可以尝试以下方法:

    'Here comes the full name of the connection from SAP Logon
    myConnection = "DE2 [erpdd...]" 
    os.startfile("C:\\Program Files (x86)\\SAP\\FrontEnd\\SAPgui\\saplogon.exe")
    shell = win32com.client.Dispatch("WScript.Shell")
    time.sleep(4)
    
    sapGuiAuto = win32com.client.GetObject("SAPGUI")
    sapApplication = sapGuiAuto.GetScriptingEngine
    sapConnection = sapApplication.openconnection(myConnection)
    session = sapConnection.Children(0)
    session.findById("wnd[0]").maximize
    'start authenticating
    ...
    

    问候,脚本人

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-13
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-10
      相关资源
      最近更新 更多