我正在尝试从tab1打开一个新选项卡(现在我有两个不同的选项卡。Tab1和Tab2),第二个带有URL的选项卡未完全加载,而是停在了中间,并显示了无标题的选项卡。
public void waitForPageLoadComplete(WebDriver driver, int specifiedTimeout) {
Wait<WebDriver> wait = new WebDriverWait(driver, specifiedTimeout);
wait.until(driverTemp -> String.valueOf(((JavascriptExecutor) driverTemp).executeScript("return document.readyState"))
.equals("complete"));
}
在上面的代码中,我让驱动程序等待特定时间以正确加载页面或返回超时,但是上面的代码也不起作用,如果我使用Thead.sleep(millSec),则等待线程有时,直到那个时候页面都被正确加载。有人可以帮助我如何在不使用thread.sleep的情况下在新标签页中加载URL。
答案 0 :(得分:0)
首先,您必须将驱动程序切换到应该执行JavaScript的选项卡。我用这个:
public void goto2() throws InterruptedException {
ArrayList<String> winHandles = new ArrayList<String> (driver.getWindowHandles());
// it takes some ms to get the WindowHandles, so this solution does not avoid Thread.sleep completely
Thread.sleep(500);
driver.switchTo().window(winHandles.get(1));
}
另一件事是javascript本身。要等待页面完全加载,请使用以下命令:
public void waitDom() {
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.onload = null;");
}