企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] 前言: 在脚本中加入太多的sleep后会影响脚本的执行速度,虽然implicitly\_wait()这种方法隐式等待方法一定程度上节省了很多时间。 但是一旦页面上某些js无法加载出来(其实界面元素经出来了),左上角那个图标一直转圈,这时候会一直等待的。 <br /> ## 一、参数解释 1. 这里主要有三个参数: `class WebDriverWait(object):driver, timeout, poll\_frequency` * driver:返回浏览器的一个实例,这个不用多说 * timeout:超时的总时长 * poll\_frequency:循环去查询的间隙时间,默认0.5秒 <br /> ## 二、元素出现: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") ``` <br /> ## 三、元素消失: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)