2011-04-05 25 views
1

考慮這個腳本:QTP:如何在檢查點屬性編輯對話框中獲取「複雜值」編輯控件?

SystemUtil.Run "notepad.exe" 
    With Window("Notepad") 
    .WinEditor("Edit").Type "A" 
    .WinEditor("Edit").Type micReturn 
    .WinEditor("Edit").Type "B" 
    .WinEditor("Edit").Check CheckPoint("Edit") 
    End With 

編輯關卡只檢查了WinEditor的Text屬性等於我們輸入的內容:「A」,回車,換行,「B」。 (這正是編輯器所包含的內容,您可以通過查看GetROProperty ("Text")進行驗證,它將返回一個長度爲4的字符串,其ASCII碼爲65,13,​​10,66,這正是我所期望的。)

如果我通過使用最後一個Type調用的活動屏幕創建檢查點,並使用其中包含的值創建檢查點,然後在編輯Text屬性值的對話框中獲得「複雜值」編輯控件。它只需按Enter即可支持輸入換行符。到現在爲止還挺好。

如果我手動創建檢查點並手動輸入Text屬性的期望值,那麼我會得到一個簡單的編輯控件。我不能輸入帶有換行符的字符串。

問題是:如果我最初沒有創建帶有「複雜」值的檢查點,例如沒有換行符的字符串,如何使用複合值編輯控件輸入預期的字符串值?

如果我完全不能這樣做,這將是一個設計故障 - 考慮這個:假設你使用活動屏幕創建它,然後編輯預期值爲一件小事。這導致從現在開始的(微不足道的)期望值只能通過簡單的編輯控件進行編輯 - 而且我無法撤銷我的更改並重新編輯期望值以包含換行符。

一個想法是創建一個正則表達式。以上示例的正則表達式爲"A\cM\cJB"。然而,這不起作用。一個單獨的問題(QTP: How do I match (or parametrize) line breaks in multiline edit controls?)詢問爲什麼,所以讓我們試着避免這個問題中的這個正則表達式方面。 另外,我不知道如何將包含換行符的這些值參數化爲數據表列,如果不是作爲正則表達式的話。我無法在數據表單元格中輸入換行符。但是這個方面也存在於正則表達式問題中,所以我們也要避免這方面的問題。

+0

似乎這不是一個簡單的問題。無論何時如此,答案通常是「這不是一個功能,這是一個錯誤」。 :( – TheBlastOne 2011-04-12 10:59:18

回答

1

QTP的機;)承認這是「由設計」 :)

一種解決方法可能是使用更新模式捕捉包含含有CR LF序列的值的值。然後,可以返回到「複雜值」編輯對話框。

但是QTP GUI沒有辦法擺脫編輯「死衚衕」。

+0

同時,增強請求已創建,因此它可能會在未來的版本中修復。 – TheBlastOne 2011-05-18 07:50:54