# （十三）切换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()方法

切换回到主页面，调用这个方法会将定位的上下文切回主页面，此后就可以继续定位主页面上的元素了。


### 示例代码

```javascript
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)


