在使用webdriver进行数据爬取的过程中发现会打开多个窗口,而在java开发中,如何关闭这些窗口,并进行权柄的切换将是一个问题。
如果直接使用webDriver.close();会出现如下错误
而为了解决这样的问题,使用如下方法即可
public static void closeWindow(WebDriver webDriver) {
try {
//先获取当前窗口句柄
String winHandleBefore = webDriver.getWindowHandle();
//然后使用set集合获取所有窗口句柄
Set winHandles = webDriver.getWindowHandles();
//接下来可以关闭窗口
webDriver.close();
Thread.sleep(5000);
//创建迭代器,迭代set集合中的句柄
Iterator it = winHandles.iterator();
//用it.hasNext()判断进行判断
while (it.hasNext()) {
//获取集合中的元素
String win = (String) it.next();
//判断此窗口是否为要关闭的窗口
if (!win.equals(winHandleBefore)) {
//将权柄切换到之前的窗口
webDriver.switchTo().window(win);
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}