我想玩pywinauto,我認爲一個簡單的項目會讓它自動化Windows畫圖。結果比我預期的要複雜。pywinauto用Windows測試測試
我想嘗試打開這裏顯示的屬性菜單項:
到目前爲止,我有這樣的代碼:
from pywinauto.application import Application
import pywinauto
app = Application(backend='uia')
p = pywinauto.findwindows.find_element(title_re=".* - Paint")
app.connect(handle=p.handle)
dlg = app.window(title_re=".* - Paint")
dlg.File_tab.click()
該代碼連接到現有的開放漆窗口打開文件選項卡。從那裏我不確定如何實際點擊'屬性'。我認爲像「dlg.Properties.click()」這樣簡單的東西可能會起作用,但那會給我一個ElementNotFound錯誤。
我發現GitHub的頁面有油漆自動化這裏一些示例代碼: https://github.com/pywinauto/pywinauto/blob/master/examples/mspaint.py
是通過實施例看着行32我可以看到,他們可以通過調用childwindow並調用它訪問菜單上的項目。在github的例子中,第32行表示這樣:
dlg.child_window(title='Open', control_type='MenuItem', found_index=0).invoke()
我不完全明白這一點。那是說點擊文件選項卡會打開一個新的「子窗口」?我的另一個問題是,調用什麼來點擊某些東西?
我試圖使用github示例中的代碼,但我不知道如何讓它工作。 github示例從文件選項卡運行「打開」選項。
我試着去適應從GitHub和使用「屬性」行了,而不是「開放」是這樣的:
dlg.child_window(title='Properties', control_type='MenuItem', found_index=0).invoke()
實際上導致油漆崩潰時,我嘗試。
當我從pywinauto打印控件標識符時,「屬性」菜單項出現在控件列表中。它看起來像這樣:
菜單項 - '屬性'(L1,T476,R254,B531) [ 'PropertiesMenuItem', 'MenuItem6', '屬性'] child_window(標題= 「屬性」,CONTROL_TYPE = 「MenuItem」)
如何使用上述信息來弄清如何正確訪問菜單項?
'invoke'使用所謂的'InvokePattern'來表示控件的默認動作。我們決定把它的名字叫做'invoke',因爲它可能有另一個含義。我們只使用'click'方法作爲按鈕控制的別名。 –