selenium-切换到新的窗口
/**
* 功能: 切换windows窗口
*@param driver
*@param windowTitle
*@return boolean
*/
public boolean switchToNewWindow(WebDriver driver, String windowTitle) {
boolean flag = false;
try {
String currentHandle = driver.getWindowHandle();
Set<String> handles = driver.getWindowHandles();
for (String s : handles) {
if (s.equals(currentHandle))
continue;
else {
driver.switchTo().window(s);
if (driver.getTitle().contains(windowTitle)) {
flag = true;
System.out.println("Switch to window: " + windowTitle
+ " successfully!");
break;
} else
continue;
}
}
} catch (NoSuchWindowException e) {
System.out.println("Switch to window: " + windowTitle
+ " failed!");
e.printStackTrace();
flag = false;
}
return flag;
}
/**
* 功能:删除一个窗口的Handler,由于set集合是无序的,所以需要删除
*@param driver
*@param firstHandler
*/
public void removeOldWindow(WebDriver driver, String firstHandler) {
// 获取所有窗口的Handler,并存放在Set集合里
Set<String> handlers = driver.getWindowHandles();
// 删掉第一个窗口的Handler
if (handlers.remove(firstHandler)) {
System.out.println("已删掉第一个窗口的Handler");
}
// 把Set集合转换成Iterator
Iterator<String> it = handlers.iterator();
try {
if (it.hasNext()) {
driver.switchTo().window(it.next());
}
} catch (Exception e) {
System.out.println("没有可用的窗口Handler");
}
}