在CHROME浏览器中对页面执行操作之前,webdriver中等待页面完全加载的命令是什么?
PageLoadTimeOut没有等待在Chrome中完成页面加载,而它在firefox中运行正常。
在Chrome中,如果页面上有webelement,则webdriver正在加载页面时对webelement执行操作。这导致脚本随机失败,异常'元素无法点击'。
如果有任何解决方法,请告诉我。
由于
答案 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