2009-09-24 46 views
3

什麼是避免Selenium測試在處理ASP.NET頁面上呈現的控件的變化「名稱」和「Id」屬性時被破壞的好方法一個母版頁?我想避免在ASP.NET使用不同的DOM標識符呈現網頁控件時更改我的測試。使用Selenium使用母版頁測試ASP.NET網站

回答

5

http://www.stevetrefethen.com/blog/AutomatedTestingOfASPNETWebApplicationsUsingSelenium.aspx

硒 解決了使用XPath和 提供定位基於XPATH表達式 控制能力這一問題, 減輕需要硬編碼的HTML標籤 結構成一個測試腳本。對於 例如,ASP.NET運行時可以 呈現看起來像ID屬性:

id="ctl00_cphContents_gridMaint_DataGrid" 

查找使用XPATH表達式 這種控制可以被簡化爲 是這樣的:

table[contains(@id, "gridMaint")] 

如果嵌套 DataGrid更改腳本將 繼續正常運行,只要 的表格ID包含文本 「gridMaint」。

+0

這正是我所需要的,我很好奇我會在何處對此進行修改,這是通過HTML源代碼視圖完成的。 Selenium測試,還是通過提供的API來完成?我還可以在API中使用這種技術,因爲我修改了使用.NET編碼的測試? – Achilles 2009-09-24 19:53:47

+0

想象一下!再次感謝! – Achilles 2009-09-24 20:09:28

3

另一種選擇是使用CSS定位器。它們通常比XPath更脆弱。例如,要使用.myDiv類定位div,可以使用定位器「css = .myDiv」。如果指定的元素有其他類,CSS定位器仍然可以工作,儘管XPath等價物會從「// div [@ class ='myDiv']」更改爲「// div [contains(@class,'myDiv']」而且,CSS定位器往往比跨瀏覽器的XPath更快。