本文为大家讲解selenium 中如何处理弹出窗口
原理
测试页面的HTML
Java 代码
原理
在代码里, 通过 Set<String> allWindowsId = driver.getWindowHandles();
来获取到所有弹出浏览器的句柄, 然后遍历, 使用swithcto.window(newwindow_handle)方法。 就可以定位到新的窗口
测试页面的HTML
<html><head> <title>常见web ui元素操作, 及API使用</title> <script type="text/javascript"> function open_win() { window.open("http://www.cnblogs.com") } </script></head><body> <form> <input type=button value="打开窗口" onclick="open_win()"> </form> </div></body></html>
Java 代码
public static void testMultipleWindowsTitle(WebDriver driver) throws Exception { String url="E:\\StashFolder\\huoli_28@hotmail.com\\Stash\\Tank-MoneyProject\\Selenium Webdriver\\AllUIElement.html"; driver.get(url); // 获取当前窗口的句柄 String parentWindowId = driver.getWindowHandle(); System.out.println("driver.getTitle(): " + driver.getTitle()); WebElement button = driver.findElement(By.xpath("//input[@value='打开窗口']")); button.click(); Set<String> allWindowsId = driver.getWindowHandles(); // 获取所有的打开窗口的句柄 for (String windowId : allWindowsId) { if (driver.switchTo().window(windowId).getTitle().contains("博客园")) { driver.switchTo().window(windowId); break; } } System.out.println("driver.getTitle(): " + driver.getTitle()); // 再次切换回原来的父窗口 driver.switchTo().window(parentWindowId); System.out.println("parentWindowId: " + driver.getTitle()); }
附: selenium java教程 (连载中, 敬请期待)
java selenium (一) selenium 介绍
java selenium (二) 环境搭建方法一
java selenium (三) 环境搭建 基于Maven
java selenium (四) 使用浏览器调试工具
java selenium (五) 元素定位大全
java selenium (六) xpath 定位
java selenium (七) CSS 定位
java selenium (八) Selenium IDE 用法
java selenium (九) 常见web UI 元素操作 及API使用
java selenium (十) 操作浏览器
java selenium (十一) 操作弹出对话框
java selenium (十二) 操作弹出窗口
java selenium (十三) 智能等待页面加载完成
java selenium (十四) 处理Iframe 中的元素