Java:无法通过Selenium中的WebElement列表进行迭代

时间:2017-12-19 19:56:33

标签: java selenium for-loop foreach

由于某种原因,即使我使用增强的for循环遍历列表中的所有元素,此代码也始终打印列表中第一个元素的标题。

    List<WebElement> elementList = getAllElements(driver);

    String title = "";
    String[] XPath = {"//*[contains(@id,'itemName')]"};


    for (WebElement singleElement : elementList) {

        try {
            title = singleElement.findElement(By.xpath(XPath[0])).getText();
            System.out.println("Title: " + title);

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

列表中有169个元素具有不同的标题,但不是打印169个不同的标题,而是将第一个标题打印169次。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

别管我们,我找到了答案,它与绝对与相对XPath搜索有关。

要解决此问题,您需要做的就是更改:

String[] XPath = {"//*[contains(@id,'itemName')]"};

为:

String[] XPath = {".//*[contains(@id,'itemName')]"};

额外的点强制它使用相对XPath而不是绝对XPath。

我希望这有助于其他人。