【发布时间】:2010-12-01 05:17:25
【问题描述】:
在处理使用母版页在 ASP.NET 页面上呈现的控件的不断变化的“名称”和“Id”属性时,避免 Selenium 测试被破坏的好方法是什么?当 ASP.NET 使用不同的 DOM 标识符呈现网页的控件时,我想避免更改我的测试。
【问题讨论】:
在处理使用母版页在 ASP.NET 页面上呈现的控件的不断变化的“名称”和“Id”属性时,避免 Selenium 测试被破坏的好方法是什么?当 ASP.NET 使用不同的 DOM 标识符呈现网页的控件时,我想避免更改我的测试。
【问题讨论】:
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”。
【讨论】:
另一种选择是使用 CSS 定位器。它们通常不如 XPath 脆弱。例如,要定位具有 .myDiv 类的 div,您可以使用定位器“css=.myDiv”。如果指定的元素有其他类,则 CSS 定位器仍然可以工作,尽管 XPath 等效项将从 "//div[@class='myDiv']" 更改为 "//div[contains(@class, 'myDiv']" . 此外,跨浏览器的 CSS 定位器往往比 XPath 更快。
【讨论】: