【问题标题】:Selenium Java Find the item until the page is loadedSelenium Java 查找项目,直到页面加载
【发布时间】:2016-06-09 14:19:12
【问题描述】:

我有类似这样的代码

WebDriver driver = new FirefoxDriver();
driver.get(something URL);
WebDriverWait waiting = new WebDriverWait(driver, 10, 1000);
WebElement element = waiting.until(ExpectedConditions.presenceOfElementLocated(By.id(my_id)));//problem is here

然后我尝试在我的页面上查找元素,WebDriverWait 等到页面完全加载然后开始搜索。 如果我正在尝试这样的事情

WebDriverWait waiting = new WebDriverWait(driver, 10, 2700);
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
WebElement element;
            try {
                driver.get(something_url);
            } catch (TimeoutException e) {
                ((JavascriptExecutor) driver).executeScript("window.stop();");

            }finally {
                element = waiting.until(ExpectedConditions.presenceOfElementLocated(By.id(my_id)));
            }

它有效,但如果我继续这样下去

element.click();//go to another page

在此行不会抛出超时异常,我必须等待整个页面加载。 这种情况怎么办?

【问题讨论】:

    标签: java selenium selenium-webdriver


    【解决方案1】:

    解决方法是在这个页面等待ajax刷新完成:

    public void waitForAjaxRefresh() {
           System.out.println("Waiting for Ajax Refresh");
            try {
                WebDriverWait wait = new WebDriverWait(driver,35);
                final JavascriptExecutor javascript = (JavascriptExecutor) (driver instanceof JavascriptExecutor ? driver
                        : null);
    
                wait.until(new ExpectedCondition<Boolean>() {
                    @Override
                    public Boolean apply(WebDriver d) {
                        boolean outcome = Boolean.parseBoolean(javascript
                                .executeScript("return jQuery.active == 0")
                                .toString());
                        return outcome;
                    }
                });
            } catch (TimeoutException ex) {
                throw new TimeoutException("Timed out after "
                        + 35
                        + " seconds while waiting for Ajax to complete.");
            } catch (WebDriverException e) {
                System.out.println("JQuery libraries are not present on page "
                        + driver.getCurrentUrl() + " - "
                        + driver.getTitle());
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2014-08-27
      • 1970-01-01
      • 1970-01-01
      • 2017-01-15
      • 2021-01-18
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多