【问题标题】:Testing ASP.NET sites using master pages with Selenium使用 Selenium 的母版页测试 ASP.NET 站点
【发布时间】:2010-12-01 05:17:25
【问题描述】:

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

【问题讨论】:

    标签: asp.net html selenium


    【解决方案1】:

    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”。

    【讨论】:

    • 这正是我所需要的。我很好奇我会在哪里对我的测试进行修改。这是通过 Selenium 测试的 html 源视图完成的,还是通过提供的 API 完成的?当我修改使用 .NET 编写的测试代码时,我还可以将这种技术与 API 一起使用吗?
    • 想通了!再次感谢!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-10
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      相关资源
      最近更新 更多