[乐意黎原创] 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, [email protected]
Set handles = mainWindow.getWindowHandles();
Out.println(handles);
					 		
Out.println("Change to detail page");
//detailWindow=WindowUtil.getPopupWindow(mainWindow);
Iterator itWin = handles.iterator();
while(itWin.hasNext()) {
	String key = itWin.next();
	if (mainWindowHandle.equals(key)) {
		continue;
	}
	detailWindowHandle = key;
}
//author: aerchi, [email protected]
detailWindow = mainWindow.switchTo().window(detailWindowHandle);					 
//detailWindowHandle = WindowUtil.getWindowHandle(detailWindow);	
					
detailWindow.close();
handles.remove(detailWindowHandle);
					 
//切换到主窗口
mainWindow = mainWindow.switchTo().window(mainWindowHandle);
//author: aerchi, [email protected]


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

 

弄明白了,这两个方法的不同,以上错误信息就能迎刃而解了。


大功造成,特此记录一下。

版权所有,转载请注明出处。

本文地址: http://blog.csdn.net/aerchi/article/details/43985099

你可能感兴趣的:(自动化测试+Selenium,网页自动化测试)