1

我試圖自動化一個Web應用程序,它動態地在頁面中生成控件,並且Web控件的ID永遠不會相同。如何使用動態創建的控件進行自動化測試?

我正在使用Visual Studio 2012 Ultimate,MTM和Coded UI測試。該應用程序正在使用C#和Visual Studio 2012編譯

問題是,隨着每次新運行時控件的ID發生更改,測試總是失敗。

有什麼辦法解決這個問題嗎?

+0

難道你不能專門給這些控件分配**固定的ID嗎? – 2014-09-21 14:23:47

+1

編碼的用戶界面傾向於創建搜索條件,並指定可指定的所有內容。通常你可以刪除不需要的或無用的標準。您可能只能從搜索條件中刪除控件ID。 – AdrianHHH 2014-09-21 14:35:32

+0

目前我無法分配固定ID的這些控件。我已將請求發送給開發團隊。 – 2014-09-21 14:37:04

回答

2

如果控件ID正在改變,您可以使用任何其他標識符來獲取控件,如類名,標記名等。 如果classname也是動態的,那麼您可以切換到標記名並獲取控件的內部HTML以確認該控件與預期相同。 然後你就可以處理這個問題。

+0

我能夠做到這一點,但問題是,我使用de VS工具生成腳本來記錄步驟,而Visual Studio會自動生成腳本。在腳本生成後,我必須手動進行更改以避免使用ID和名稱。 如上所述,它的工作,但它並不是有效的。我會繼續搜索 – 2014-09-22 11:47:06

1

我不是很知道這個情況,但我可以給你舉個例子,也許你可以根據實際情況模擬這個:

例如:像LoadRunner的工具(用於性能測試),當它記錄它捕獲包括會話ID的所有動態值在內的所有內容,所以現在,如果重播腳本,它將失敗,因爲在重新運行時,會話ID由於動態性而改變。 我們如何處理這個問題:我們採用頁面源代碼並標記出現哪個動態值的左右邊界,並將動態值存儲在某個變量中,因此下次運行時,您不必擔心動態值。

不要混淆你,但同樣,你可以採取頁面源代碼,標記左右字符串,將這些標記之間的值存儲在一個變量中並處理它。爲了標記,你可以使用一些正則表達式......希望這有助於。 !

+0

如前所述,問題是我使用VS工具來記錄步驟並自動生成代碼。我必須手動進行修改,這很慢。 – 2014-09-22 11:49:05

+0

「...我必須手動進行修改,這是非常緩慢的....」,這就是爲什麼你得到了大筆錢,因爲這種專業知識 – 2014-09-22 13:11:00

1

假設您的網絡應用有一個按鈕,並且您想單擊該按鈕。在你的情況下,ID是動態的,我會而不是記錄點擊按鈕。您需要動態創建該按鈕,並即時添加搜索屬性。見下面的代碼。

//創建html按鈕的實例作爲測試步驟。

HtmlInputButton myButton = new HtmlInputButton(someUIMap.UISomeWindow.UISomeDocument); 

//搜索指定的UI文件作爲測試步驟中的按鈕。在這裏我們可以通過DisplayText屬性進行搜索。

myButton.SearchProperties.Add("DisplayText", "Your buttons Display Text"); 

//如果存在的話點擊按鈕。

if(myButton.Exists) 
{ 
    Mouse.Click(myButton); 
} 

我希望這有助於。

+0

是的,它可以幫助,但是,我做了它在記錄測試後修改了由visual studio生成的搜索條件。不是最好的解決方案,但它的工作。 – 2014-09-27 13:15:36

相關問題