5-selenium设置元素等待


加载页面时,会遇到代码执行到,但元素没有被加载出来,就会报错找不到元素
此时可以设置元素等待来解决这种问题。

webdriver提供了两种元素等待:显示等待、隐式等待

一、显示等待

原则:等到就继续执行,等不到就终止并抛异常

缺点:繁琐、步骤多

需要引入这些库:

# 设置元素定位使用哪种方法
from selenium.webdriver.common.by import By 
# 元素等待类
from selenium.webdriver.support.ui import WebDriverWait 
# 提供条件判断函数
from selenium.webdriver.support import expected_conditions as EC 

使用方法:

# 代码解释:
# webdriver会等到EC.visibility_of_element_located这个条件成立,
# 每隔0.5s检查一次,最多等待5s。条件成立时就继续执行,否则抛出异常
browser = webdriver.Chrome()
browser.get('网址')

element = WebDriverWait(browser,5,0.5).until(
    EC.visibility_of_element_located(
        (By.CSS_SELECTOR,css元素定位表达式)
    )
)

二、隐式等待

与显示等待类似,均是在最大等待时间范围内等到就继续执行,等不到就报错

browser = webdriver.Chrome()
browser.get('网址')

# 申明隐式等待,只对申明之后的代码有效,默认单位:秒,默认轮询时间0.5s
browser.implicitly_wait(5) 

三、显示等待、隐式等待、强制等待对比

1、显示等待比隐式等待省时

2、隐式等待比显示等待的写法更简单

3、强制等待,会降低代码执行效率,即使加载完元素,依然等待

如何选择?

如果本机电脑性能不太好,加载慢,可以使用强制等待;
如果代码量少,可以使用隐式等待;
如果代码量多,建议使用显示等待,并将显示等待封装为方法来调用

猜你喜欢

转载自blog.csdn.net/weixin_45128456/article/details/113871031