保证切换到Selenium中的特定窗口

时间:2016-09-02 15:01:30

标签: java selenium

我用Google搜索并查看此网站以供参考,但我遇到的所有答案都没有提供切换到特定窗口的保证方式。

我正在使用Java与Selenium,我试图找到一种保证在两个窗口之间切换的方法(第二个窗口来自点击产生弹出窗口的链接)。

driver.getWindowHandles()创建一个Set对象,由于Set接口不提供任何排序​​保证,我将如何切换到特定窗口?

我现在拥有的是:

public static void switchToPopUpWindow(By by) {
    driver.findElement(by).click();
    Set<String> handles = driver.getWindowHandles();
    if (handles.size() > 1) {
        for (String currentWindow : handles) {
            driver.switchTo().window(currentWindow);
        }
    } else {
        logger.info("There is only one window open...");
    }
}

然而,由于订购无法保证,它不会总是落在我想要的窗口上。如何保证切换到弹出窗口?

1 个答案:

答案 0 :(得分:0)

要切换到第二个窗口,请使用与当前窗口不同的句柄切换:

public static void switchToPopUpWindow(By by) {
    driver.findElement(by).click();

    String currentHandle = driver.getWindowHandle();
    Set<String> handles = driver.getWindowHandles();

    for (String handle : handles) {
        if (!handle.equals(currentHandle)) {
            driver.switchTo().window(handle);
            return;
        }
    }

    logger.info("There is only one window open...");
}