首页 文章

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

提问于
浏览
1

我试图打开从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.sleep(millSec),线程等待一段时间,直到那个时候页面加载没有任何错误 . 有人可以帮助我如何在新选项卡中加载URL而不使用thread.sleep .

1 回答

  • 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;");
    }
    

相关问题