使用Selenium使用母版页测试ASP.NET站点

时间:2009-09-24 19:42:07

标签: asp.net html selenium

在处理使用母版页在ASP.NET页面上呈现的控件的更改“名称”和“Id”属性时,避免Selenium测试被破坏的有效方法是什么?当ASP.NET使用不同的DOM标识符呈现网页控件时,我想避免更改我的测试。

2 个答案:

答案 0 :(得分: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”。

答案 1 :(得分:3)

另一种选择是使用CSS定位器。它们通常不如XPath脆弱。例如,要使用.myDiv类来定位div,可以使用定位器“css = .myDiv”。如果指定的元素具有其他类,则CSS定位器仍然可以工作,尽管XPath等效项将从“// div [@ class ='myDiv']”更改为“// div [contains(@class,'myDiv']”)此外,CSS定位器往往比浏览器中的XPath更快。