深入selenium三种等待方式使用

Selenium是一个流行的自动化测试工具,它可以用于模拟用户在Web浏览器中的操作。在使用Selenium时,我们经常需要等待某些元素出现或某些操作完成。Selenium提供了三种等待方式来实现这一点:

  1. 隐式等待(Implicit Wait):在执行每个操作时,Selenium会等待一定的时间(默认为0秒)以等待页面加载完成。如果在规定的时间内找到了元素,则继续执行下一步操作。如果在规定的时间内没有找到元素,则抛出NoSuchElementException异常。
from selenium import webdriver

driver = webdriver.Chrome() driver.implicitly_wait(10) # 隐式等待10秒

driver.get('http://www.example.com') element = driver.find_element_by_xpath('//input[@name="q"]') element.send_keys('selenium')

  1. 显式等待(Explicit Wait):在执行每个操作时,Selenium会等待一定的时间(由我们自己设置)以等待某个条件成立。如果在规定的时间内找到了元素,则继续执行下一步操作。如果在规定的时间内没有找到元素,则抛出TimeoutException异常。
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()

driver.get('http://www.example.com') element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.XPATH, '//input[@name="q"]')) ) element.send_keys('selenium')

  1. 静态等待(Sleep):在执行每个操作时,Selenium会等待一定的时间(由我们自己设置)。不管页面是否加载完成,都会继续执行下一步操作。
from selenium import webdriver
import time

driver = webdriver.Chrome()

driver.get('http://www.example.com') time.sleep(10) # 静态等待10秒

element = driver.find_element_by_xpath('//input[@name="q"]') element.send_keys('selenium')

总之,Selenium提供了三种等待方式来等待某些元素出现或某些操作完成。我们可以根据具体情况选择合适的等待方式。