目录

(十三)切换frame

为什么要切换

当我们要定位的元素位于页面中的iframe或frame标签中时,我们必须将定位的上下文切换到对应的frame中去,否则我们将没有办法定位到frame中的元素,这是套路,可以先无脑记住。

目的

学会使用switchTo().frame(id)方法

switchTo().frame(id)方法详解

  • id可以是1个数字,从0开始。switchTo().frame(0)表示切换到页面上的第1个frame,依此类推;
  • id也可以是1个WebElement对象,也就是需要切换到的frame;
  • id可以是null,等于是调用了switchTo().defaultContent()方法;

switchTo().defaultContent()方法

切换回到主页面,调用这个方法会将定位的上下文切回主页面,此后就可以继续定位主页面上的元素了。

示例代码

var webdriver = require('selenium-webdriver'),
  By = webdriver.By;

var dr = new webdriver.Builder().forBrowser('chrome').build();
dr.get('some url');

// 切换到第2个frame进行元素定位
dr.switchTo().frame(1).then(function() {
  dr.findElement(By.id('this-element-is-in-frame'));
});

// 切换到第id==example-frame的frame中进行元素定位
dr.findElement(By.id('example-frame')).then(function(iframe) {
  dr.switchTo().frame(iframe).then(function() {
    dr.findElement(By.id('this-element-is-in-frame'));
  });
});

// 切换回主页面
dr.switchTo().defaultContent();

原始封面

https://images.unsplash.com/photo-1502481851512-e9e2529bfbf9?w=300