2011-09-22 100 views
0

我有一個處理各種屏幕報表選項的TC腳本。窗口類名稱在每個屏幕上都會更改,因爲我希望此腳本可以在翻譯的環境中工作,窗口標題也會更改。第一部分正常工作,但如何解釋更改的窗口名稱?如果我刪除標題,TC炸彈具有模糊的窗口識別錯誤。使對象類名稱成爲參數

當前代碼段(同一個屏幕的標題):

w := p.WaitWindow('*', 'Options', 1, 10000); 
if w.Name='frmBasicOpt' then 
begin 
.... 

是否可以在類名是在這樣我就可以離開了標題喂參數?如果是這樣,我該怎麼做?

頭......受到傷害。

謝謝!

回答

2

不知道我理解的任務,但我會盡力幫助到我的理解程度。 因此,窗口類的名稱是一個動態的東西,這就是爲什麼你用通配符掩蓋它。但是,如果您能夠參數化它,則表明您仍然想要使用類名稱。所以,似乎有一種方法可以在測試執行期間從某處獲取類名。如果是這樣,你可以把類名的變量,這個變量傳遞給WaitWindow方法作爲參數,並掩蓋了標題,以避免使用特定語言的字幕:

clsName := ....; // get it from somewhere 
w := p.WaitWindow(clsName, '*', 1, 10000); 
if w.Name='frmBasicOpt' then 
begin 

如果我的理解是不正確的並且沒有辦法事先知道類名,您可以考慮使用不同的方法來標識選項窗口而不指定標題。可能的解決方案包括:

  1. 當對話框打開時,它變爲活動狀態。所以,你可以通過Sys.Desktop.ActiveWindow獲得對話框。

  2. 如果這是一個MFC應用程序,請注意窗口的ControlID屬性 - 它可以在應用程序的代碼中設置,用於對象識別。因此,您可以使用FindChild方法通過屬性值查找窗口。

  3. 如果窗口中有一些特定於此窗口的子對象,則可以創建一個函數,該對象將獲取Process對象的所有子窗口(FindAllChildren),遍歷列表並檢查其中哪些具有這些窗口特定的子對象。

爲這項工作對你有任何幫助嗎?如果沒有,那麼關於你的任務的更多信息可能會幫助我提出其他建議。

亞歷克斯

+0

你完全理解 - 抱歉,如果它不清楚!我會嘗試你的建議!謝謝! – GreenMtnGal

相關問題