【python】【selenium】隐式等待、显示等待、强制等待的使用场景

当浏览器加载页面时,我们想要与之交互的元素可能尚未被加载出来。此刻不仅难以识别元素,而且很容易定位不到元素,抛出异常。设置等待,我们可以解决此问题。

常用的有三种元素等待方式:隐式等待、显示等待、强制等待

一、隐式等待

通过implicitly Wait完成的延时等待,注意这种是针对全局设置的等待,如设置超时时间为10秒,使用了implicitlyWait后,如果第一次没有找到元素,会在10秒之内不断循环去找元素,如果超过10秒还没有找到,则抛出异常,隐式等待比较智能,它可以通过全局配置,但是只能用于元素定位。

driver.implicitly_wait(10)

二、显示等待

显式等待:也称为智能等待,针对指定元素定位指定等待时间,在指定时间范围内进行元素查找,找到元素则直接返回,如果在超时还没有找到元素,则抛出异常,显示等待是 selenium 当中比较灵活的一种等待方式,他的实现原理其实是通过 while 循环不停的尝试需要进行的操作。

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

driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
# 每隔 0.5s 检查一次(默认就是 0.5s), 最多等待 5 秒
element = WebDriverWait(driver, 5, 0.5).until(
    EC.visibility_of_element_located(
        (By.ID, "kw")
    )
)
element.send_keys('selenium')
driver.quit()

三、强制等待

强制等待:也叫线程等待, 通过线程休眠的方式完成的等待,如等待5秒: Thread sleep(5000),一般情况下不太使用强制等待,主要应用的场景在于不同系统交互的地方。

import time

time.sleep(3)

你可能感兴趣的:(Python学习,python,selenium)