jck28-lucio-网页frame与多窗口处理

目录

  • 窗口切换介绍
  • 窗口切换处理
  • frame 介绍
  • frame 切换处理

课程目标

  1. 掌握什么是窗口以及多窗口切换的处理方式。
  2. 掌握什么是 frame 以及多个 frame 的处理方式。

思考

如果直接定位一个重新打开的新窗口的元素,可以定位到吗?

多窗口介绍

  • 一个浏览器中同时打开多个窗口或选项卡。
  • 如果不进行窗口切换,就无法在新窗口中进行后续的操作。

多窗口处理

image

代码实现(Java)

//获取当前窗口句柄
String originalWindow = webDriver.getWindowHandle();

//获取所有窗口句柄
Set<String> allWindows = webDriver.getWindowHandles();

// 切换到新窗口
for (String windowHandle : allWindows) {
    if (!windowHandle.equals(originalWindow)) {
        webDriver.switchTo().window(windowHandle);
        break;
    }
}

思考

在页面的 elements 元素定位没有问题,但是在代码中执行无法定位到(No Such Element)是什么原因?

frame 介绍

  1. frame 是 html 中的框架。可以在同一个浏览器中显示不止一个页面。
  2. frame 标签包含 frameset、frame、iframe 三种。
  3. 如果不进行 frame 切换,就无法定位到 frame 中的元素进行后续的操作。
  • frameset :和普通的标签一样,不会影响正常的定位。
  • frame/iframe :可以使用 index、id、name、webelement 任意种方式定位。

单个 frame

frame 嵌套测试页面

多个 frame

frame 嵌套测试页面

常用方法(Java)

方法 说明
webDriver.switchTo().frame(id/name/WebElement) 切换到 frame
webDriver.switchTo().parentFrame() 切换到父框架
webDriver.switchTo().defaultContent() 切回到最外层