python selenium--三种等待方式

本文深入讲解Selenium中三种等待方式:强制等待、隐性等待和显性等待的使用方法及优缺点,通过实例演示如何在Python脚本中灵活运用这些等待策略,提高自动化测试效率。

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

python selenium–三种等待方式

1.强制等待

就是最普通的时间等待,也是最直观简单的一种等待方式,可以放在需要时间等待的地方,不管页面加载没加载完,必须等。不够灵活。

demo:
from selenium import webdriver
import time

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

# 强制等待
time.sleep(3)

print(driver.current_url)
driver.quit()

2.隐性等待

隐性等待就是设置了一个最长等待时间,如果页面在等待时间内加载完了,则执行下一步,如果页面加载时间超过等待时间,那么最长在等待时间时就执行下一步。这样做的好处,就是页面加载完了就执行,页面没加载完就到等待时间执行下一步。坏处就是,等待时间长短的设置,会影响脚本运行效率的关键,另一个就是,在等待时间过了之后执行下一步,很容易定位不到元素,需要加上判断,抛出异常。

demo:
from selenium import webdriver

driver = webdriver.Chrome()

# 设置隐性等待,最长30秒
driver.get('https://www.baidu.com')

print(driver.current_url)
driver.quit()
  • 注意:隐性等待对整个driver的周期都起作用,设置一次即可。

3.显性等待

WebDriverWait:这个类的运作流程就是,程序每过一段时间就检查一次,如果条件成立就执行下一步,如果条件不成立,继续等待,直到超过最大等待时间,抛出TimeoutException

配合until()和until_not()方法,可以根据判断条件进行灵活的等待了。

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

driver = webdriver.Chrome()

driver.get('hhtps://www.baidu.com')
driver.find_element_by_id('kw').send_keys('自动化测试')
driver.find_element_by_id('su').click()

locator = (By.LINK_TEXT, '00')

try:
	WebDriverWait(driver, 10, 1).until(EC.presence_of_element_located(locator))
	print(driver.find_element_by_link_text('00').get_attribute('href'))
except:
	print('没有找到,超时了')
finally:
	driver.quit()

这里面的try要配合except使用,不然异常无法抛出,程序报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值