我們日常在對SAP GUI進行自動化的時候,經常需要操作ComboBox對象(下拉框)。如下圖所示:

session.findById("wnd[0]/usr/tabsTABSTRIP_0100/tabpTABSTRIP_0100_FC4/ssubTABSTRIP_0100_SCA:SAPLEPIC_PROC:5000/cmbEPIC_BACO_QC_QUERY_SELECT-ZBUKR").key = "CNAA"
眼尖的童鞋,根據ID的最後一部分開頭“cmbEPIC_BACO_QC_QUERY_SELECT-ZBUKR”其實就能猜到它是一個comboBox對象,如果我們對此不夠确定,可以直接列印元素的type,如:
myTypeName = session.findById("wnd[0]/usr/tabsTABSTRIP_0100/tabpTABSTRIP_0100_FC4/ssubTABSTRIP_0100_SCA:SAPLEPIC_PROC:5000/cmbEPIC_BACO_QC_QUERY_SELECT-ZBUKR").Type
print(myTypeName)
最後也能知道,該元素的type是GuiComboBox。當然,利用我前期博文中提到的Tracker工具,也能輕松知道元素的type,如下圖所示:
Python驅動SAP GUI完成自動化(六):驅動組合框GuiComboBox
接着我們可以檢視SAP GUI Scripting API手冊,了解其特性:1.2.12 GuiComboBox Object、1.2.14 GuiComboBoxEntry Object
從上圖可以看到,comboBox的下拉清單中每一個都是一個comboBoxEntry對象,它可以通過comboBox的Entries屬性拿到所有comboBoxEntry集合,然後基于索引來周遊它,每個comboBoxEntry又分别有key和value屬性,支援讀寫。有了這些,結合元素的count屬性,我們就可以輕松周遊到元素的每一個item的key和value,既可以讀取目前Key和Value,又可以直接對目前combobox的Key進行設定。見如下代碼示例:
companyEntryCollection = session.findById("wnd[0]/usr/tabsTABSTRIP_0100/tabpTABSTRIP_0100_FC4/ssubTABSTRIP_0100_SCA:SAPLEPIC_PROC:5000/cmbEPIC_BACO_QC_QUERY_SELECT-ZBUKR").Entries
companyEntryNum = companyEntryCollection.Count
# combobox下拉清單最後一行為空,索引從0開始
For i in range(0,companyEntryNum - 1):
print(companyEntryCollection(i).Key,companyEntryCollection(i).Value)
session.findById("wnd[0]/usr/tabsTABSTRIP_0100/tabpTABSTRIP_0100_FC4/ssubTABSTRIP_0100_SCA:SAPLEPIC_PROC:5000/cmbEPIC_BACO_QC_QUERY_SELECT-ZBUKR").Key = companyEntryCollection(i).Key '設定key
各位小夥伴,每天掌握一個小技巧,從此用python輕松玩轉SAP GUI自動化!
快來掃碼關注我的公衆号 擷取更多爬蟲、資料分析的知識!