Java Selenium (十二) 操作弹出窗口

本文将介绍在Selenium中如何处理弹出窗口。

原理

在代码里, 通过 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 中的元素



相关文章

发表评论

Comment form

(*) 表示必填项

还没有评论。

跳到底部
返回顶部