python+selenium+pytest-(4)_三种等待方式
强制等待
必须要等待设定时间结束才会执行下一步操作
import time
time.sleep(3)
隐式等待
- 只用声明一次
- 隐式等待会在设定的时间内等待元素出现,若出现则会执行下一步操作,若没有出现则会抛出异常-TimeoutException
- 在整个WebDriver生命周期起作用,即每次查找元素都会等待
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(10)
显示等待
- 用在指定元素上
- 使用类-ExpectedCondition定义的条件来判断元素是否满足条件
- 每次使用都要编写相应的等待条件
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.Chrome()
element = WebDriverWait(driver,10,0.5).until(EC.visibility_of_element_located((By.ID,"myElement")))
driver是webdriver对象
10是最长等待时间
0.5是每0.5秒去查询对应的元素
until后面跟的等待具体条件
EC是判断条件,检查元素是否存在于页面的 DOM 上