selenium在当前浏览器页面打开了新的窗口,此时如果要聚焦到新开的浏览器窗口,就需要切换到新的窗口。切换窗口主要用到getWindowHandle()
;getWindowHandles()
;switchTo().window()
等方法。具体示例如下:
public static void main(String[] args) {
// 打开浏览器访问目标网页
System.setProperty("webdriver.chrome.driver", "webdriver/chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://www.baidu.com");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
// 新开浏览器窗口
driver.findElement(By.xpath("//a[text()='新闻']")).click();
// 只有两个窗口时,通过窗口的句柄是否等于默认窗口判断是否切换
String mainHandle = driver.getWindowHandle();
Set<String> Handles = driver.getWindowHandles();
for (String hand : Handles) {
if (!hand.equals(mainHandle)) {
driver.switchTo().window(hand);
break;
}
}
System.out.println("切换后的新窗口是:" + driver.getTitle());
// 切回原窗口,点击打开新的窗口
driver.switchTo().window(mainHandle);
driver.findElement(By.xpath("//a[text()='hao123']")).click();
// 此时已有三个浏览器窗口,通过窗口title判断
Set<String> Handles1 = driver.getWindowHandles();
for (String hand : Handles1) {
if (driver.switchTo().window(hand).getTitle().equals("hao123_上网从这里开始")) {
driver.switchTo().window(hand);
break;
}
}
System.out.println("切换后的新窗口是:" + driver.getTitle());
driver.quit();
}