目录
- 窗口切换介绍
- 窗口切换处理
- frame 介绍
- frame 切换处理
课程目标
- 掌握什么是窗口以及多窗口切换的处理方式。
- 掌握什么是 frame 以及多个 frame 的处理方式。
思考
如果直接定位一个重新打开的新窗口的元素,可以定位到吗?
多窗口介绍
- 在一个浏览器中同时打开多个窗口或选项卡。
- 如果不进行窗口切换,就无法在新窗口中进行后续的操作。
多窗口处理
代码实现(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 介绍
- frame 是 html 中的框架。可以在同一个浏览器中显示不止一个页面。
- frame 标签包含 frameset、frame、iframe 三种。
- 如果不进行 frame 切换,就无法定位到 frame 中的元素进行后续的操作。
-
frameset
:和普通的标签一样,不会影响正常的定位。 -
frame/iframe
:可以使用 index、id、name、webelement 任意种方式定位。
单个 frame
多个 frame
常用方法(Java)
方法 | 说明 |
---|---|
webDriver.switchTo().frame(id/name/WebElement) | 切换到 frame |
webDriver.switchTo().parentFrame() | 切换到父框架 |
webDriver.switchTo().defaultContent() | 切回到最外层 |