如果有两个或多个元素具有完全相同的属性,如何识别Web元素?

时间:2016-06-02 15:18:26

标签: java selenium webdriver

下面是一段代码,其中包含三个具有相同属性的元素。 我如何访问第三个元素(3 rd div)。

<pre>
  <div class="tab-bar ons-tab-bar__footer ons-tabbar-inner" qmx-tabs="">
    <div class="tab-bar__item ng-scope" ng-repeat="tab in tabbarTabsList track by tab.page">

      <div class="tab-bar__item ng-scope" ng-repeat="tab in tabbarTabsList track by tab.page">
        <button class="tab-bar__button tab-bar-inner qmx-tab-active" ng-class="{'qmx-tab-active' : $index === activeTabIndex }" ng-click="loadTab($index)">
      </div>


        <div class="tab-bar__item ng-scope" ng-repeat="tab in tabbarTabsList track by tab.page">
          <button class="tab-bar__button tab-bar-inner" ng-class="{'qmx-tab-active' : $index === activeTabIndex }" ng-click="loadTab($index)">
        </div>

    </div>
  </div>
</pre>

我需要使用 findElement(By。)方法。

2 个答案:

答案 0 :(得分:0)

如果确实需要使用findElement(By。)方法,可以使用xpath选择与描述符匹配的第N个元素

(//div)[3]

或者你可以使用findElement s (By。)方法来查找与描述符匹配的所有元素,并从该列表中获取第N个元素(或者如果需要多个元素则迭代它)< / p>

答案 1 :(得分:0)

您也可以使用By.cssSelector(),因为您的商品位于<b>标记下

driver.findElement(By.cssSelector("div.tab-bar b > div.tab-bar__item"));

此外,查看代码,您可能想要单击它。如果要单击它,则需要单击其下方的按钮。

driver.findElement(By.cssSelector("div.tab-bar b > div.tab-bar__item > button")).click();