java selenium 操作弹出窗口示例代码

时间:2021-11-04 15:57:21

selenium 中如何处理弹出窗口

阅读目录

  • 原理
  • 测试页面的HTML
  • Java 代码

原理

在代码里, 通过         Set<String> allWindowsId = driver.getWindowHandles();

来获取到所有弹出浏览器的句柄,   然后遍历,  使用swithcto.window(newwindow_handle)方法。 就可以定位到新的窗口

测试页面的HTML

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<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 代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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());
  }

以上就是关于Java selenium 操作弹窗窗口的示例,后续继续整理相关资料,谢谢大家对本站的支持!