2013-04-22 113 views
3

我試圖使用HwndWrapper.Texts()這應該是「返回該控件的每個項目的文本」,但它只返回作爲u'Fight計劃設置對話框的瓦片,爲什麼這是否發生?獲取一個窗口的內容到一個文本文件

的代碼是這樣的:

prog=application.Application() 
prog.connect_(path=r'D:\Thesis\Euroscope\Euroscope.exe') 
w_handle = pywinauto.findwindows.find_windows(title=u'Fight plan setting dialog', class_name='#32770')[0] 
window = prog.window_(handle=w_handle) 
c=prog.Fightplansettingsdialog.Texts() 

這裏是我試圖複製從窗口的屏幕:

http://imageshack.us/photo/my-images/802/newpicturewe.png/

我花了一個下午看完pywinauto文檔和我不能設法找到一種方式來獲得像以前那樣的窗口內容到文本文件中(除了用DoubleClick()單擊和複製每個項目,然後使用TypeKeys進行復制,這太長了)。有任何想法嗎?

編輯:此外,我發現PrintControlIdentifiers不能輕鬆保存到一個字符串文件。當我詢問c時,c = prog.PrintControlIdentifiers()返回None。任何方式在這個?

謝謝

回答

2

您可以通過運行所有孩子從窗口中獲取所有文本。

all_texts = [] 
for child in window.Children(): 
    all_texts.extend(child.Texts()) 
all_texts = filter(lambda t:t, all_texts) # clear empty texts 

順便說一句,似乎窗口應該被稱爲 '飛行計劃......' :-)

PS。 我很樂意幫助虛擬控制器!

UKHH - MDN91

+0

該死的,正是我想要的,謝謝!儘管如此,我明白了......「filter(lambda t:t,all_texts)」的含義是什麼? 另外,child.Texts()中讀數的順序是什麼?因爲它在IFR上開始讀取而不是在呼號 是的,我注意到「撲滅計劃」。這是一個Euroscope錯誤:D – 2013-04-23 12:00:45

+0

(1).Texts()可能會返回一個空文本列表,例如['一些文字','']。它只是清除了大量的'','','',... lambda t:t爲''(空字符串)返回False。 (2)訂單沒有具體說明。因此,如果您要查找具體樣式,請根據此表製作一個帶有字段名稱和轉儲文本的有序表格。 (3)一個有趣的錯誤 – SWAPYAutomation 2013-04-23 13:15:06

相關問題