Selenium+TestNG实战-7 多个tab之间driver的切换
本篇接着前面内容,主要学习driver如何在同一个浏览器的两个不同tab进行切换,然后如何判断我们创建的文章就是我们新建的。

1. 如何实现不同tab之间切换
上一篇脚本我们点击了发布文章的link,结果会在新tab打开。这个就给我带来了一个新的问题,也就是selenium的一个API知识点的学习,也就是根据tab的ID或者叫句柄来进行switchTo的方法。原理就是,先获取当前句柄,保存下来,然后获取全部tab的句柄,这个是一个集合,我们利用遍历的方法去判断,如果遍历的句柄和当前句柄相等,那么就执行什么操作。这个操作,常见就是关闭当前句柄对应tab页面,然后切换到新的tab,这样driver就停留在一个tab,直接在这个tab进行元素查找和操作。还有另外一个情况,两个tab都不进行关闭,driver在两个tab之前来回取值去判断。个人认为,第二种方法比较啰嗦,建议关闭当前句柄页面,切换到新页面。在BasePage.java中封装的这个切换方法代码如下
public void switchWindow(){
String currentWindow = driver.getWindowHandle();// 获取当前窗口句柄
Set<String> handles = driver.getWindowHandles();// 获取所有窗口句柄
Logger.Output(LogType.LogTypeName.INFO, "当前窗口数量: "+ handles.size());
Iterator<String> it = handles.iterator();
while (it.hasNext()) {
if (currentWindow == it.next()) {
continue;
}try {
driver.close();
WebDriver window = driver.switchTo().window(it.next());// 切换到新窗口
Logger.Output(LogType.LogTypeName.INFO, "new page title is "+ window.getTitle());
} catch (Exception e) {
Logger.Output(LogType.LogTypeName.ERROR,"法切换到新打开窗口"+ e.getMessage());
}
//driver.close();//关闭当前焦点所在的窗
原创不易,完成人机校验,阅读全文