子窗口关闭时获取NoSuchWindowException

时间:2015-08-11 13:29:37

标签: java windows selenium-webdriver

我有以下情景

我在父窗口中单击一个链接(即添加注释链接)以打开一个新窗口。我添加注释并单击关闭按钮以切换回父窗口

点击关闭按钮后,我遇到异常

引起:org.openqa.selenium.remote.ErrorHandler $ UnknownServerException:找不到窗口。浏览器窗口可能已关闭。 构建信息:版本:'2.39.0',修订版:'14fa800511cc5d66d426e08b0b2ab926c7ed7398',时间:'2013-12-16 13:18:38' 系统信息:主机:'INLN50866593A',ip:'10 .52.27.72',os.name:'Windows 8.1',os.arch:'amd64',os.version:'6.3',java.version:'1.7.0_55 “ 驱动程序信息:driver.version:未知

我已经编写了以下代码来将窗口切换到子窗口

public void switchWindow() {
        for (final String s : HtmlAutomationHelper.getWindowHandles())
            HtmlAutomationHelper.switchToWindow(s);
        SynchronizationHelper.pause(3000);
    }

切换窗口后,我添加评论点击关闭按钮

但是一旦我点击关闭按钮,我就会得到nosuchwindowexception

1 个答案:

答案 0 :(得分:0)

可能的问题是您正在关闭您不想要的父窗口。

String originalWindowHandle = driver.getWindowHandle();
java.util.Set<java.lang.String> windowHandles = driver.getWindowHandles();

for (String window: windowHandles) {

    //skip if parent window
    if(!window.equals(originalWindowHandle)){
        //if not parent switch to window
        driver.switchTo().window(window);
        //do whatever and use close window here to
        //close the child window        
    }  
    // if you are done switch back to parent`   
    driver.switchTo().window(originalWindowHandle);     
}