2017-04-27 81 views
1

我想玩pywinauto,我認爲一個簡單的項目會讓它自動化Windows畫圖。結果比我預期的要複雜。pywinauto用Windows測試測試

我想嘗試打開這裏顯示的屬性菜單項:

Properties menu item

到目前爲止,我有這樣的代碼:

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」)

如何使用上述信息來弄清如何正確訪問菜單項?

回答

1

我發現,我能有pywinauto點擊下面的行的「屬性」菜單項:

dlg.child_window(title="Properties", control_type="MenuItem").invoke() 

我還是不明白是什麼「援引」了,因爲這不似乎在任何文件中都有描述。

+0

'invoke'使用所謂的'InvokePattern'來表示控件的默認動作。我們決定把它的名字叫做'invoke',因爲它可能有另一個含義。我們只使用'click'方法作爲按鈕控制的別名。 –