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

Selenium webdriver 如何在Chrome浏览器中等待页面加载完成,selenium-webdriver,webdriver,selenium-chromedriver,Selenium Webdriver,Webdriver,Selenium Chromedriver,webdriver中的命令是什么,在CHROME浏览器中对页面执行操作之前,等待页面完全加载 PageLoadTimeOut不是在Chrome中等待页面加载完成,而是在firefox中工作正常 在Chrome中,如果页面上有webelement,则webdriver会在页面加载时对webelement执行操作。这导致脚本随机失败,异常为“元素不可单击” 请让我知道是否有任何解决办法 谢谢,您可以使用自定义等待方法来启用或显示页面上的元素 例如,使用以下代码创建自定义方法isElementEnab

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

PageLoadTimeOut不是在Chrome中等待页面加载完成,而是在firefox中工作正常

在Chrome中,如果页面上有webelement,则webdriver会在页面加载时对webelement执行操作。这导致脚本随机失败,异常为“元素不可单击”

请让我知道是否有任何解决办法


谢谢,您可以使用自定义等待方法来启用或显示页面上的元素

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

driver.findElement(locator).isEnabled();
或者使用以下代码检查元素在页面上是否可见:

driver.findElement(locator).isDisplayed();
将元素
定位器
作为输入参数传递给方法

或者使用隐式等待:

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

希望这会有所帮助

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

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

import time

# some of your code

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

# rest of your code

您可以找到一个适当的时间跨度,以确保页面加载并将该时间作为参数传递。但是使用太长的时间会使程序变慢。

您可以使用
JavaScriptExecuter.executeScript
获取
文档.readyState
,将其与
完成
进行比较,作为WebDriverWait的一个条件。如下所示:

WebDriverWait wait = new ...;
wait.until(new ExpectedCondition<Boolean>(){
    public Boolean apply(WebDriver driver) {
        return (JavaScriptExecutor) driver).executeScript("return document.readyState").equals("complete");
    }
});
WebDriverWait wait=new。。。;
等待.直到(新的ExpectedCondition(){
公共布尔应用(WebDriver驱动程序){
return(JavaScriptExecutor)driver.executeScript(“return document.readyState”).equals(“complete”);
}
});

不幸的是,使用
Chrome
如果您在页面上有一个警报,您将得到一个未处理的AlertException。对于
Firefox

,这不会发生。我目前正在使用这些等待方法。但仍然在chrome中,webdriver不会等待指定的时间。