selenium三类等待

1.强制等待

强制等待只要运行到sleep函数中,就必须按照指定的时间等待;

from time import sleep
# 强制等待3秒时间
sleep(3)

2.隐式等待

隐式等待implicitly_wait()是当页面加载完成以后,再开始调用后续代码时会进入隐式等待,如果等待到元素,则会直接对该元素进行操作,没有获取到,则会进入隐式等待时间,当等待最大时间超时后,会继续进行后续的操作,不会报错,置于后面的代码会不会报错则隐式等待就不管了。
其用法是在一开始创建driver对象时就进行设置,设置一次全局生效(指driver的生命周期)。可以通过设置页面加载策略进一步提升效率

# 隐式等待:最大等待5秒的时间。
driver.implicitly_wait(5)
  • 优点:只需要设置一次即可;

  • 缺点:找不到元素就不管了;页面也必须加载完后才开始执行。

3.显示等待

在设置的周期内,按照扫描频率持续扫描,如果找到了就对元素进行操作,找不到则继续扫描,超过最大时间后报错;

# 显式等待指定元素,最大等待时间是10秒,每0.5秒执行一次,一直到元素被查找到为止,如果没找到,则显示Message的内容,抛出异常TimeoutException
el = WebDriverWait(driver, 2, 0.5).until(lambda el1: driver.find_element('xpath', '//*[@id="1"]/div/div/h3/asda'),message='显式等待失败')

总结:

隐式等待和显示等待可以共用,共用时等待取决于谁的时间更长;

driver对象默认加载的页面,都是不加载本地缓存信息的。就会导致有时候遇到资源加载比较多的页面,加载速度就会很慢
可以通过调节页面的加载策略,从而实现更快速度的访问。Selenium提供有页面的加载策略,在ChromeOptions中进行配置

from selenium import webdriver
# 页面加载策略
'''
selenium带有三种不同的加载策略:
1. normal:是selenium默认的加载策略,不需要定义。表示所有内容全部加载完成,包括静态资源、css样式、js、dom树等一切内容。
2. eager:放弃加载css样式、静态资源等,提升加载速度
3. none:只等初始页面加载完成就直接操作所有的加载策略都在ChromeOptions中进行设置。
'''
options = webdriver.ChromeOptions()
# 设置加载策略为none
options.page_load_strategy = 'none'
  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃鱿鱼的大叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值