在selenium中遍历具有相同名称的类

时间:2012-11-27 13:32:20

标签: java selenium-webdriver

在我正在测试的网站中,有一个包含5个具有相同名称的嵌套类的表。

我需要验证表格下面只有5个类,但它们都是相同的名称。

如何迭代5个类?

我附上了一张图片,以便更好地解释我的意思enter image description here

3 个答案:

答案 0 :(得分:3)

这取决于“迭代”的含义,但一种可能性是使用XPath的子位置选择器。例如,findElement(By.xpath("//div[contains(@class, 'list-container')]/div[contains(@class, 'list-0')]/div[2]"))将找到“top-performer-item”div中的第二个。

答案 1 :(得分:2)

您可以尝试以下代码段:

int numberOfElementsFound = getNumberOfElementsFound(By.cssSelector(".list-container > .list-0 > .top-performer-item"));
  for (int pos = 0; pos < numberOfElementsFound; pos++) {
    getElementWithIndex(locator, pos).doWhateverYouWantWithTheElement()
  }

  public int getNumberOfElementsFound(By by) {
      return webDriver.findElements(by).size();
  }

  public WebElement getElementWithIndex(By by, int pos) {
      return webDriver.findElements(by).get(pos);
  }

答案 2 :(得分:1)

最后,我所要做的就是确保3个列表中共有15个项目,因此每个列表中有5个项目。我需要迭代以确保没有遗漏任何东西,并且在你的答案的帮助下我找到了答案:

List<WebElement> element = driver.findElements(By
            .className("top-performer-item"));

    assertEquals(15, element.size());
    driver.quit();

我没有选择任何特别的答案,因为这是你们两个帮助我的帮助。我非常感谢你!

相关问题