【问题标题】:Selenium webdriver new tab URL is not loaded properlySelenium webdriver 新选项卡 URL 未正确加载
【发布时间】:2018-12-10 15:23:57
【问题描述】:

我正在尝试从 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。

【问题讨论】:

  • 这听起来像是X-Y problem。与其寻求解决问题的帮助,不如编辑您的问题并询问实际问题。你想做什么?

标签: java selenium


【解决方案1】:

首先,您必须将驱动程序切换到应执行 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;");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多