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 ,此方法是关闭当前窗口,或最后打开的窗口。
部分代码如下:
// author: aerchi, aerchi@gmail.com
Set<String> handles = mainWindow.getWindowHandles();
Out.println(handles);
Out.println("Change to detail page");
// detailWindow=WindowUtil.getPopupWindow(mainWindow);
Iterator<String> itWin = handles.iterator();
while(itWin.hasNext()) {
String key = itWin.next();
if (mainWindowHandle.equals(key)) {
continue;
}
detailWindowHandle = key;
}
// author: aerchi, aerchi@gmail.com
detailWindow = mainWindow.switchTo().window(detailWindowHandle);
// detailWindowHandle = WindowUtil.getWindowHandle(detailWindow);
detailWindow.close();
handles.remove(detailWindowHandle);
//切换到主窗口
mainWindow = mainWindow.switchTo().window(mainWindowHandle);
复制代码
1. webDriver.Close() - Close the browser window that the driver has focus of //关闭当前焦点所在的窗口
2. webDriver.Quit() - Calls dispose //调用dispose方法
3. webDriver.Dispose() Closes all browser windows and safely ends the session 关闭所有窗口,并且安全关闭session
弄明白了,这两个方法的不同,以上错误信息就能迎刃而解了。
大功造成,特此记录一下。
作者:
Miss_love
时间:
2020-12-29 09:05
支持分享
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2