8、 selenium 元素等待

本文介绍了Selenium中用于网页元素加载等待的两种主要策略:显式等待(WebDriverWait)和隐式等待。显式等待允许设置超时时间和检测频率,直到特定条件满足或抛出TimeoutException。隐式等待则是在整个会话中设置一个固定的等待时间,适用于所有元素查找。示例代码展示了如何使用这些等待机制以及异常处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

显示等待

webdriver等待某个条件成立,则继续执行,否则在达到最长时间时抛出异常(TimeoutException)
在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在;如果超出设置时间仍然检测不到,则抛出异常

方法说明

WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)
driver:浏览器驱动
timeout:设置的超时时间,单位 秒
poll_frequency:检测的时间间隔,默认0.5秒
ignored_exceptions:超时后的异常信息,默认抛出 NoSuchElemnetException

WebDriverWait()一般和until()或者until_not()一起配合使用
until(method,message="")    # 直到返回值为True
until_not(method,message="")    # 直到返回值为False

在这里插入图片描述
实现代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

url = "https://www.baidu.com"
driver = webdriver.Chrome()
driver.get(url)

element = WebDriverWait(driver,5,0.5).until(
    EC.visibility_of_element_located((By.ID,"kw"))
)
element.send_keys("显示等待")

time.sleep(5)
driver.quit()

隐式等待

"""隐式等待"""
from selenium import webdriver
from time import ctime
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException

url = "https://www.baidu.com"
driver = webdriver.Chrome()
# 设置等待时间为10秒
driver.implicitly_wait(10)
driver.get(url)

try:
    print(ctime())
    driver.find_element(By.ID,"kw11").send_keys("隐式等待")
    driver.find_element(By.ID,"su").click()
except NoSuchElementException as e:
    print(e)
finally:
    print(ctime())
    driver.quit()

强制等待

直接使用time库的sleep方法来充当等待时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值