测试相关

Selenium+TestNG实战-7 多个tab之间driver的切换

本篇接着前面内容,主要学习driver如何在同一个浏览器的两个不同tab进行切换,然后如何判断我们创建的文章就是我们新建的。1.如何实现不同tab之间切换上一篇脚本我们点击了发布文章的link,结果会在新tab打开。这个就给我带来了一个新的问题,也就是selenium的一个API知识点的学习,也就是根据tab的ID或者叫句柄来进行switchTo的方法。原理就是,先获取当前句柄,保存下来,然后获取


本篇接着前面内容,主要学习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();//关闭当前焦点所在的窗

原创不易,完成人机校验,阅读全文

相关推荐