代码之家  ›  专栏  ›  技术社区  ›  RAAAAM

Selenium webdriver新选项卡URL未正确加载

  •  1
  • RAAAAM  · 技术社区  · 6 年前

    我试图从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"));
        }
    

    在上面的代码中,我让驱动程序等待特定的时间来正确加载页面或返回timedout,但是上面的代码也不起作用,如果我使用Thead.睡眠(millSec),线程会等待一段时间,直到加载页面时没有任何错误。有人能帮助我如何在新的标签页加载网址而不使用线程睡眠.

    1 回复  |  直到 6 年前
        1
  •  0
  •   pburgr    6 年前

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