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