使用Java关闭Selenium中的Windows警报框后如何切换到主窗口

时间:2019-06-19 13:46:12

标签: java selenium

我正在使用Selenium 3.7.1和firefox最新版本67.0.2,实际上是在尝试单击基于Windows的弹出窗口(使用AutoIT脚本单击“确定”)后尝试切换回主页。但是在弹出窗口关闭后,我无法切换回第一个窗口(即主页)。总共有两个打开的窗口。

由于无法将控件带回父页面,因此我使用下面的代码切换回主页而不关闭父窗口。最近,在代码运行正常之前,我们对项目进行了升级。

public void switchToNewWindow(int windowNumber) {
    Set<String> s = driver.getWindowHandles();
    Iterator<String> ite = s.iterator();
    int i = 1;
    while (ite.hasNext() && i < 10) {
        String popupHandle = ite.next().toString();
        driver.switchTo().window(popupHandle);
        System.out.println("Window title is : " + driver.getTitle());
        if (i == windowNumber)
            break;
        i++;
    }
}

我得到以下输出:

  

org.openqa.selenium.NoSuchWindowException:浏览上下文已被丢弃

2 个答案:

答案 0 :(得分:0)

仅供参考:

您可能不需要使用AutoIt,可以通过以下方式接受警报:

Alert alert = driver.switchTo().alert(); 

driver.switchTo().alert(); 

alert.accept();  

只需使用switchTo().defaultContent()

driver.switchTo().defaultContent();

希望这会有所帮助!

答案 1 :(得分:0)

String mainWindow = driver.getWindowHandle();

//here, your action to bring up a new window
driver.click    

for (String winHandle : driver.getWindowHandles()) {
        driver.switchTo().window(winHandle);
        if(!winHandle.equals(mainWindow)) {
            driver.close();
        }
}

//switch to main window
driver.switchTo().window(mainWindow);