小爬最近為了提升自己的常見編程算法,以應對未來日趨復雜的業務場景需求,一直在刷LeetCode的Easy和Medium題,進度很慢,隨便一道題都要思考再三,長路漫漫,以至於很長時間都沒有更新自動化方面的文章了。不過最近工作中遇到這樣一個場景,我們在利用Python驅動SAP GUI時,可能希望多開SAP窗口,實現多個頁面同時作業,對自動化腳本進行加速。SAP中的Session就是我們認知中的一個SAP前端界面。通常我們用python連接SAP的腳本如下:
import sys, win32com.client SapGuiAuto = win32com.client.GetObject("SAPGUI") application = SapGuiAuto.GetScriptingEngine connection = application.Children(0) session = connection.Children(0)
倘若我們有多個頁面,則可以用腳本計算得到它的窗口數,關閉其他一些session,僅保留一個session,下面是演示該功能的代碼:
sessionCnt = connection.Children.count # 獲得該connection下到底多少個session for i in range(sessionCnt): if i>0: session=connection.Children(1) #隨着session不停被close,剩余session的下標會前移,所以永遠操作children1即可關閉多余的session session.findById("wnd[0]").close() session=None session=connection.Children(0)
如果我們想創建多個session,則可以這樣做:
for i in range(n): #SAP最多能創建幾個會話,是有物理限制的 session.createSession()
如果要同時操作4個session,可以嘗試如下代碼:
session1=connection.Children(0) session2=connection.Children(1) session3=connection.Children(2) session4=connection.Children(3)
然后我們就可以基於上面的每個session分別執行findById等自動化操作了 (→_→),趕緊動手驗證下~