Chromedriver并不总是在窗口中切换

时间:2015-10-07 15:35:05

标签: google-chrome selenium selenium-webdriver webdriver selenium-chromedriver

我使用这种方法:

for (String handle: driver.getWindowHandles ()) {driver.switchTo (). window (handle);}

但Chrome并不总是切换。我也等待窗口标题的值:

waitDriver.until (ExpectedConditions.titleIs ("new title"));

但是,(如果我理解的话),Webdriver没有在新窗口中切换。它保留在旧窗口中,并在同一窗口中而不是在新窗口中等待标题。所以我不能等待我需要的标题和窗口。任何异常或正确的开关。 结果是:

Timed out after 10 seconds waiting for title to be "new titile". Current title: "old titile". 

1 个答案:

答案 0 :(得分:0)

您是否尝试在调试模式下运行?它可能会告诉你问题是什么。

或者尝试遵循逻辑(为窗口句柄创建ArrayList<String>,然后从列表中删除旧句柄。)如果这对您有用,请将其用作util方法并在需要时调用。 :

String oldTab = driver.getWindowHandle();
    try{
        List<String> newTab = new ArrayList<String>(driver.getWindowHandles());
        newTab.remove(oldTab);
        driver.switchTo().window(newTab.get(0));
    } catch (Exception e) {
        Reporter.log("No new tab found!! " + "Number of tabs currently open = "+driver.getWindowHandles().size(), Base.DEBUG_MODE);
        throw e; // or do whatever you wanna do here
    }

如果您想创建一个静态方法来切换到新窗口并将其放到您的工具中,这是一种方法:

public static void switchToNewTab(WebDriver driver) throws Exception {
    String oldTab = driver.getWindowHandle();
    try{
        List<String> newTab = new ArrayList<String>(driver.getWindowHandles());
        newTab.remove(oldTab);
        driver.switchTo().window(newTab.get(0));
    } catch (Exception e) {
        Reporter.log("No new tab found!! " + "Number of tabs currently open = "+driver.getWindowHandles().size(), Base.DEBUG_MODE);
        throw e;
    }   
}