有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java FluentWait如何真正看到将被上传的元素?

我正在编写一个程序,在其中我使用FluentWait搜索一个元素,该元素将在一定时间后上传到网页。然后我需要程序点击元素并从那里开始工作。我的问题是,如果页面不经常刷新,这将如何工作?我知道它会用特定的时间设置来轮询站点,但如果浏览器没有重新加载页面,它如何才能真正找到新元素

Wait<WebDriver> wait = new FluentWait(driver)
        .withTimeout(5, TimeUnit.SECONDS)
        .pollingEvery(1, TimeUnit.SECONDS)
        .ignoring(NoSuchElementException.class);

        WebElement refresher = wait.until(new Function<WebDriver, WebElement>() 
        {
            public WebElement apply(WebDriver driver) 
            {
                return driver.findElement(By.linkText("Link Text of Item"));            
            }
        });

        String productlink = driver.findElement(By.linkText("Link Text of Item")).getAttribute("href");
        driver.get(productlink);

这是我尝试使用while循环刷新浏览器,直到找到元素(在本例中是网站添加的产品)

Boolean isPresent = driver.findElements(By.linkText("Supreme®/ANTIHERO® Ppe Crewneck")).size() > 0;
        while(!isPresent){
            driver.get(driver.getCurrentUrl());

    }

我对Selenium还不熟悉,欢迎提供任何指导


共 (1) 个答案

  1. # 1 楼答案

    如果浏览器没有刷新页面,或者没有javascript更新页面内容,那么FluentWait将找不到您要查找的元素。FluentWait只有在您的测试执行了一个会导致页面刷新的操作,或者一些javascript更新了内容,从而显示了目标元素时才真正有用。FluentWait的目标是等待足够长的时间,以便刷新/更新在单击元素之前完成