在平时测试时,经常会遇到弹出一个窗口,或者新开一个页面,并且得在新弹出或者新开的页面上做测试操作。
这就需要我们在不同的多个窗口中不停的做切换操作,这里所说切换其实就是把浏览器控制权交给对应的窗口或者页面。
例子:我们直接以百度首页,点击“注册”为例子。当我们点击“注册”后会打开新页面,如果不把控制权交给新开的页面,将无法操作新页面。
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class WindowHandlesTest {
@Test
public void windowHandlesTest() {
// 设置chromedriver的路径,根据你具体存放位置来设置路径
System.setProperty("webdriver.chrome.driver", "C:\\holmosconf\\driverServers\\chromedriver.exe");
// 启动Chrome浏览器
WebDriver driver = new ChromeDriver();
// get方式打开百度首页
driver.get("http://www.baidu.com");
// 定位"注册"标签
WebElement baidu = driver.findElement(By.name("tj_reg"));
// 点击“注册”标签
baidu.click();
// 打印出当前页面title,发现还是获取百度首页的title
System.out.println(driver.getTitle());
// 获取当前页面句柄
String handle = driver.getWindowHandle();
// 获取所有页面的句柄,并循环判断不是当前的句柄,就做选取switchTo()
for (String handles : driver.getWindowHandles()) {
if (handles.equals(handle))
continue;
driver.switchTo().window(handles);
}
// 打印出当前页面title,发现我已经把控制权交给了注册页面
System.out.println(driver.getTitle());
// 选取原来的句柄,回到原来页面
driver.switchTo().window(handle);
// 打印出当前页面title,发现我们又回到了百度首页
System.out.println(driver.getTitle());
// 结束测试
driver.quit();
}
}
运行结果:可以直接通过控制台输出,title的变化来查看是否窗口切换成功