如何在Chrome浏览器中等待页面加载完成

时间:2014-07-29 06:14:18

标签: selenium-webdriver webdriver selenium-chromedriver

在CHROME浏览器中对页面执行操作之前,webdriver中等待页面完全加载的命令是什么?

PageLoadTimeOut没有等待在Chrome中完成页面加载,而它在firefox中运行正常。

在Chrome中,如果页面上有webelement,则webdriver正在加载页面时对webelement执行操作。这导致脚本随机失败,异常'元素无法点击'。

如果有任何解决方法,请告诉我。

由于

3 个答案:

答案 0 :(得分:1)

您可以使用自定义等待方法在页面上启用或显示元素。

例如,使用以下代码创建自定义方法isElementEnable

driver.findElement(locator).isEnabled();

或使用以下代码检查元素是否在页面上可见:

driver.findElement(locator).isDisplayed();

将元素locator作为输入参数传递给方法。

或者使用隐式等待:

driver.manage().timeouts().implicitlyWait(number_of_seconds, TimeUnit.SECONDS);

希望这会有所帮助。

答案 1 :(得分:1)

这是一个非常老的问题,但是任何有相同问题的人都可能会发现这很有用:

对于chromedriver,最好使用sleep方法:

import time

# some of your code

time.sleep(2)
# here your program will wait for two seconds

# rest of your code

您可以找到合适的时间范围,以确保您的页面加载并将该时间作为参数传递。但是使用太多时间会使程序变慢。

答案 2 :(得分:1)

作为WebDriverWait的条件,您可以使用JavaScriptExecuter.executeScript获取document.readyState,并将其与complete进行比较。像这样:

WebDriverWait wait = new ...;
wait.until(new ExpectedCondition<Boolean>(){
    public Boolean apply(WebDriver driver) {
        return (JavaScriptExecutor) driver).executeScript("return document.readyState").equals("complete");
    }
});

不幸的是,使用Chrome时,如果页面上有警报,您将收到UnhandledAlertException。对于Firefox

不会发生