2009-09-24 48 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更快。