Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何更新页面上的Webelements列表?_Java_Selenium_Selenium Webdriver_Automated Tests_Functional Testing - Fatal编程技术网

Java 如何更新页面上的Webelements列表?

Java 如何更新页面上的Webelements列表?,java,selenium,selenium-webdriver,automated-tests,functional-testing,Java,Selenium,Selenium Webdriver,Automated Tests,Functional Testing,如标题所示-如何正确地刷新productList以最终在目录中找到特定的产品 此方法始终单击“显示下一个产品”按钮,即使产品本身在页面上可见。这意味着productList尚未刷新 public void findProductAndAddToCart() { //searching for products by className List<WebElement> productList = SeleniumDriver.getDrive

如标题所示-如何正确地刷新productList以最终在目录中找到特定的产品

此方法始终单击“显示下一个产品”按钮,即使产品本身在页面上可见。这意味着productList尚未刷新

   public void findProductAndAddToCart()  {

        //searching for products by className
        List<WebElement> productList = SeleniumDriver.getDriver().findElements(By.className("bcom--txtBold"));

    for (int i = 0; i < productList.size(); i++) {
        //getting the numbers of the products
        String element = productList.get(i).getText();

        if (element.equals("7000029644")) {
            productList.get(i).isDisplayed();
            System.out.println("Product is displayed");
            SeleniumDriver.getDriver().findElement(By.xpath("XPATH - Add to Cart Button')]")).click();
            break;

        } else {

            //the product hasn't been found, so need to click "Show Next Products"
            SeleniumDriver.getDriver().findElement(By.xpath("//a[contains(.,'Show Next')]")).click();
            List<WebElement> newProductList = SeleniumDriver.getDriver().findElements(By.className("bcom--txtBold"));
            productList.addAll(newProductList);


        }


你可以试试这样的

public void findProductAndAddToCart() {

    boolean flag = true;

    while (flag) {
      flag = isNextEnabled();

      //searching for products by className
      List<WebElement> productList = SeleniumDriver.getDriver()
          .findElements(By.className("bcom--txtBold"));

      for (WebElement e : productList) {

        //getting the numbers of the products
        String element = e.getText();

        if (element.equals("7000029644")) {
          e.isDisplayed();
          System.out.println("Product is displayed");
          SeleniumDriver.getDriver().findElement(By.xpath("XPATH1')]")).click();
          flag = false;
          break;

        } else {
          //don't click next here
          }
      }
          SeleniumDriver.getDriver().findElement(By.xpath("//a[contains(.,'Show 
   Next')]")).click();
    }
  }

  private boolean isNextEnabled() {
    return SeleniumDriver.getDriver()
        .findElements(By.xpath("//a[contains(.,'Show Next')]")).isEnabled;
  } 

如果我读对了,你的意思是说你看不到产品显示在控制台上吗?而是执行else语句?是的,没错。它一直在搜索..你能分享网址吗?这样我们就可以试一下了我希望我能。这是公司内部网站的测试环境,需要认证,我不能透露//我补充说。1产品编号2显示下一步按钮3添加到购物车按钮HI。感谢您的想法,但是它会一直单击“显示下一步”按钮,即使产品在目录中可见/如果您将productList打印到console,您是否看到了要查找的产品?该产品在显示的页面上不可见,因为我需要单击“显示下一步…”。。。。当它出现在第一页时,没有问题。问题在于元素的每次迭代-驱动程序都会单击按钮。因此,如果我想找到位于第14个位置的产品-司机点击按钮14次,这是不必要的,因为我只需点击一次,因为产品显示在第2页。你能试试我发布的代码吗?它将首先遍历第一页中的所有元素,如果未找到“仅”,则将单击“下一步”按钮。因此,在单击“下一步”按钮之后,在列表迭代过程中,应该会找到您的产品。因此,我发布的代码基本上会在一个列表上不断重复&单击next,直到找到一个产品,或者不再有nextI从控制台截图并在上面更新输出。