# （二十）until




### until

until一般跟wait一起用，用于等待页面上的一些条件被满足

### 条件一览

* ableToSwitchToFrame(frame): 直到selenium可以将定位上下文切换到frame里
* alertIsPresent(): 直到alert出现
* elementIsDisabled(element): 直到元素灰掉，不能被点击
* elementIsEnabled(element): 直到元素可以被点击
* elementIsNotSelected(element): 直到元素不可选
* elementIsNotVisible(element): 直到元素不可见
* elementIsSelected(element): 直到元素可选
* elementIsVisible(element): 直到元素可见
* elementLocated(locator): 最常用，直到元素可以被定位
* elementTextContains(element, substr): 直到元素的text包含substr
* elementTextIs(element, expected_text): 直到元素的text是expected_text
* elementTextMatches(element,regex): 直到元素的text满足正则表达式regex
* elementsLocated(locator): 直到一组元素被定位
* stalenessOf(element): 直到元素被dom树移除或页面刷新
* titleContains(substr): 直到页面title包含substr
* titleIs(expected_title): 直到页面的title是expected_title
* titleMatches(regex): 直到页面的title满足正则表达式regex
* urlContains(substrUrl): 直到页面url包含substrUrl
* urlIs(expected_url): 直到页面的url是expected_url
* urlMatches(regex): 直到页面的url满足正则表达式regex


### 自定义条件

until还允许我们自定义条件。我们只需要传入1个回调，该回调返回真值(true)就代表等待的条件被满足。

在javascript，真值表示所有**不是**null, undefined, false, 0, 或 空字符串的值。

```javascript
driver.wait(function() {
  return driver.getTitle().then(function(title) {
    return title === '测试教程网';
  });
}, 1000);
```




原始封面

![课程图片](https://images.unsplash.com/photo-1463780324318-d1a8ddc05a11?w=300)


