软件测试隐式等待,23-显式等待(WebDriverWait)

[TOC]

前言:

在脚本中加入太多的sleep后会影响脚本的执行速度,虽然implicitly\_wait()这种方法隐式等待方法一定程度上节省了很多时间。

但是一旦页面上某些js无法加载出来(其实界面元素经出来了),左上角那个图标一直转圈,这时候会一直等待的。

## 一、参数解释

1. 这里主要有三个参数:

`class WebDriverWait(object):driver, timeout, poll\_frequency`

* driver:返回浏览器的一个实例,这个不用多说

* timeout:超时的总时长

* poll\_frequency:循环去查询的间隙时间,默认0.5秒

## 二、元素出现:until()

1. until里面有个lambda函数,这个语法看python文档吧

2. 以百度输入框为例

```

# coding:utf-8

from selenium import webdriver

from selenium.webdriver.support.wait import WebDriverWait

driver = webdriver.Chrome()

driver.get("http://www.baidu.com")

# 等待时长10秒,默认0.5秒询问一次

WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id("kw")).send_keys("yoyo")

```

## 三、元素消失:until\_not()

1. 判断元素是否消失,是返回Ture,否返回False

```

# coding:utf-8

from selenium import webdriver

from selenium.webdriver.support.wait import WebDriverWait

driver = webdriver.Chrome()

driver.get("http://www.baidu.com")

# 等待时长10秒,默认0.5秒询问一次

WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id("kw")).send_keys("yoyo")

# 判断"设为首页"元素是否消失

# text = driver.find_element_by_link_text("设为首页").text

is_disappeared = WebDriverWait(driver, 10, 1).\

until_not(lambda x: x.find_element_by_link_text("设为首页").is_displayed())

print(is_disappeared)

```

![Snipaste_2020-08-20_13-42-50.png](https://i.loli.net/2020/08/20/PNSF4IEwUoigOx6.png)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值