如何在没有元素的情况下重构循环方法

Ann*_*nna -1 java selenium selenium-webdriver

如何更改此方法以使用不同数量的元素?有时可能有3个元素,另一个时间5.我希望这个循环可以找到元素,只要它能找到它,如果没有,就可以打破.现在,当只有3个元素时,会出现"无法定位元素"的错误,测试失败.

public void checkProductsInOrder() {
    for (int i = 1; i <= 5; i++) {
        WebElement element = driver.findElement(By.xpath("(//td[@data-id=\"product_name\"])[" + i + "]"));
        wait.until(ExpectedConditions.visibilityOf(element));
        productsInOrder.add(element.getText());
    }
Run Code Online (Sandbox Code Playgroud)

Sub*_*raj 5

您可以使用该findElements方法查找所有匹配的元素,然后仅针对匹配的元素迭代循环.findElements方法将根据定位器找到所有匹配的元素.

请检查修改后的代码

//It will match all the product name based on the xpath (index alone needs to be removed from your index)
      List<WebElement> element = driver.findElements(By.xpath("(//td[@data-id='product_name'])"));

        int size=element.size();

        for(int i=0;i<size;i++){
            productsInOrder.add(element.get(i).getText()); 
        }
Run Code Online (Sandbox Code Playgroud)

  • 更容易:`for(WebElement elem:element){productsInOrder.add(elem.getText()); }`.如果你想查找它,它被称为*增强的循环*. (2认同)