【问题标题】:Handling dynamic ids and classes处理动态 id 和类
【发布时间】:2013-12-01 05:20:42
【问题描述】:

我正在使用 selenium 测试一个 web 应用程序,id 和类总是动态变化。所以我无法给出正确的识别,是否可以在运行时获取元素的 id,还有其他的吗处理这种情况的方法。

【问题讨论】:

    标签: selenium web driver


    【解决方案1】:

    这取决于 id 是完全随机的,还是 id 的某些部分保持不变。如果是,那么cssSelector 是显而易见的选择

    driver.findElement(By.cssSelector("div[id*=somePart]");
    

    其中id* 表示 id 包含。如果您不能使用这种方法,您将不得不使用xpath 或再次使用cssSelectors 来追踪您的元素。 XPath 示例为 here,CSS 选择器可能如下所示

    By.cssSelector("boyd table input");
    

    【讨论】:

      【解决方案2】:

      我强烈建议通过 XPath 定位元素——需要注意的是,您要使 XPath 变得健壮,而不仅仅是使用浏览器的开发工具“复制”xpath。 XPath 非常容易学习。您可以使用 XPath 在 DOM 中上下移动,并通过元素的文本或属性来识别元素。

      例如,您可能需要单击一个按钮,该按钮的 span 包含按钮上显示的文本:

      <div class="btn-row random-generated-number-1234897395">
      ...
      
      <button id="random-generated-number-239487340924257">
          <span>Click Here!</span>
      </button>
      
      ...
      </div>
      

      然后您可以使用这样的 xpath:

      //div[contains(@class, 'btn-row')]//button/span[text()='Click Here!']/..
      

      (末尾的/.. 从跨度向上走回到按钮。)

      XPath 功能强大、灵活且易于学习。当 ids 和 classes 不可靠时使用它。

      【讨论】:

        猜你喜欢
        • 2019-02-20
        • 2013-08-28
        • 2011-02-03
        • 2015-12-25
        • 1970-01-01
        • 2023-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多