51Testing软件测试论坛

标题: Selenium里WebDriver中窗口的close()与quit() [打印本页]

作者: 测试积点老人    时间: 2018-12-12 17:52
标题: Selenium里WebDriver中窗口的close()与quit()
在使用webdriver操作时,点击主窗口的链接,会弹出子窗口。此时就会有两个窗口,如主窗口为mainWindow,子窗口为detailWindow。

1、使用detailWindow = mainWindow.switchTo().window(detailWindowHandle); 切换并定位到子窗口中。

2、然后关闭子窗口,调用detailWindow.quit(),

3、mainWindow.switchTo().window(mainWindowHandle); 切换回到父窗口

4、mainWindow.quit();关闭父窗口

程序执行到第四步时,出错了,提示类似“no a session ……”错误信息,

查了一下网上的webdreiver 的 api,才发现,

quit()详细信息:  “Quits this driver, closing every associated window”,执行这个方法后,driver会关闭所有关联窗口。

close()详细信息:Close the current window, quitting the browser if it's the last window currently open  ,此方法是关闭当前窗口,或最后打开的窗口。



部分代码如下:
  1. //   author: aerchi, aerchi@gmail.com
  2.                                          Set<String> handles = mainWindow.getWindowHandles();
  3.                                          Out.println(handles);
  4.                                                         
  5.                                          Out.println("Change to detail page");
  6. //                                         detailWindow=WindowUtil.getPopupWindow(mainWindow);
  7.                                          Iterator<String> itWin = handles.iterator();
  8.                                           while(itWin.hasNext()) {
  9.                                             String key = itWin.next();
  10.                                             if (mainWindowHandle.equals(key)) {
  11.                                                 continue;
  12.                                             }
  13.                                             detailWindowHandle = key;
  14.                                          }
  15. //   author: aerchi, aerchi@gmail.com
  16.                                          detailWindow = mainWindow.switchTo().window(detailWindowHandle);                                         
  17. //                                         detailWindowHandle = WindowUtil.getWindowHandle(detailWindow);       
  18.                                        
  19.                                          detailWindow.close();
  20.                                          handles.remove(detailWindowHandle);
  21.                                          
  22.                                          //切换到主窗口
  23.                                          mainWindow = mainWindow.switchTo().window(mainWindowHandle);
复制代码


弄明白了,这两个方法的不同,以上错误信息就能迎刃而解了。
大功造成,特此记录一下。



作者: Miss_love    时间: 2020-12-29 09:05
支持分享




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2