【selenium】等待

本文详细介绍了Selenium中三种等待策略:强制等待、隐形等待和显性等待的使用方法及优缺点。强制等待使用time.sleep(),隐形等待通过implicitly_wait设置全局最长等待时间,显性等待利用WebDriverWait结合expected_conditions实现精准等待。

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

1、强制等待:sleep

import time
time.sleep(2)

缺点:
死等2秒,不管中间发生了什么,一定要等够2秒后才会继续进行下一步。
2秒内可能元素还没加载完,仍然报错
测试用例非常多的情况下,会产生大量等待时间,导致运行很慢

2、隐形等待:implicitly_wait(秒)

from selenium import webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(5)
driver.get('https://www.baidu.com')
driver.quit()

设置最长等待时间,在等待时间内加载完成则继续下一步,若超时则抛出异常报timeout
整个driver会话周期内(从打开浏览器到driver.quit()),设置一次即可,全局都可以用。后面driver查找元素的时候如果没有找到元素不会立即报错,先调用driver.implicitly_wait(2)

缺点:
切换窗口,不会等待窗口出现
随着ajax技术的广泛应用,很多元素都是部分加载,在页面未加载完元素已经出来,可以进行下一步了,但是隐形等待要等页面全部加载完

3、显性等待:WebDriverWait类
明确告诉程序要等待什么,等待多久,每多久查询一次

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.suport import expected_conditions as EC
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
id ="login"
WebDriverWait(driver.10).until(EC.visibility_of_element_located((By.ID,id)))

WebDriverWait(driver,等待时长,轮询周期).until()/until_not()
expected_conditions模块:提供了一系列期望发生的条件
presence_of_element_located:元素存在
visibility_of_element_located:元素可见
element_to_be_clickable:元素可点击

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值