selenium的显示等待、隐式等待、强制等待

关于selenium有三种等待方式,分别为显示等待、隐式等待、强制等待

1、强制等待

强制等待其实就是让程序暂停一段时间,让页面加载后再运行下一步的代码
首先,再使用强制等待前要先导入需要的包

import time

或者

from time import sleep

具体使用方法如下:

import time

for i in range(9):
    print(i)
    time.sleep(1)   #使程序暂停运行1秒

或者

from time import sleep

for i in range(9):
    print(i)
    sleep(1)   #使程序暂停运行1秒

这样程序就会每隔1秒输入i的值,这里要注意time.sleep(1)或 sleep(1)的单位是秒
使用这种方式的缺点是,如果有多个sleep语句,整个脚本的等待时间会很长

2、隐式等待

隐式等待就是在规定的时间内等页面全部加载完成后,再去进行下一步操作。
这种方式的优点是只需设置一次就可以对整个driver生效
缺点是会加长等待时间,特别是在网络慢的情况下
另外,在打开新的窗口后需要重新设置
使用方法:

from selenium import webdriver

# 打开浏览器
driver = webdriver.Chrome()
# 窗口最大化
driver.maximize_window()
# 设置隐式等待10s
driver.implicitly_wait(10)
# 访问地址
driver.get('http://baidu.com')

3.显示等待

显示等待就是当查找的元素出现后,无论网页是否加载完成都进行下一步操作
当需要进行下一步操作的元素还未加载出来时,每隔一段时间就会查找一次
当在规定的时间内没有找到需要的元素时,就报错
使用方法:

from selenium import webdriver
from selenium.webdriver.common.by import By
# 导入显示等待模块
from selenium.webdriver.support.wait import WebDriverWait
#导入显示等待条件
from selenium.webdriver.support import expected_conditions as EC

# 打开浏览器
driver = webdriver.Chrome()
# 窗口最大化
driver.maximize_window()
# 访问地址
driver.get('http://baidu.com')
# 向输入框中输入CSDN
WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located((By.ID, 'kw'))).send_keys("CSDN")
# 点击百度一下
WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located((By.ID, 'su'))).click()

WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located((By.ID, 'su')))

其中driver是webdriver对象;20是最长等待的时间,单位为秒;0.5是每隔0.5秒查找对应的元素,单位为秒。until后为查找的条件,EC是判断条件
until()也可以替换为until_not(),until是找到元素了在执行下一步,until_not是元素找不到了再执行下一步

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值