📅  最后修改于: 2023-12-03 14:55:11.627000             🧑  作者: Mango
在执行自动化测试脚本时, 经常需要等待某些操作完毕后再进行下一步操作, 这时就需要使用等待操作来确保页面元素已经加载完毕, 或者某些异步操作已经完成. Selenium中提供了两种等待方式:
显式等待在Selenium中通过 Expected Condition 实现. 在使用显式等待时, 会指定一些条件(如元素是否可见、是否可单击、是否包含特定文本等), 直到满足这些条件或超时后才会继续执行下一步操作.
如果在等待时间内条件未满足, 就会抛出 TimeoutException 异常.
以下是一个示例代码, 使用显式等待查找一个id为element的元素, 如果元素在10秒内未出现或未可点击, 就会抛出TimeoutException异常:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver.get("http://www.example.com")
# 等待元素出现和可点击
element_present = EC.element_to_be_clickable((By.ID, 'element'))
WebDriverWait(driver, 10).until(element_present)
以上代码中, 通过 WebDriverWait
指定等待时间, 并指定等待条件为元素是否可点击, 如果在10秒内元素未可点击, 就会抛出 TimeoutException
异常.
需要注意的是, 在使用显式等待时, 必须导入 WebDriverWait
和 expected_conditions
模块. 并且, 在使用等待条件时, 需要从 expected_conditions
模块中导入已有的条件, 或自定义新的条件.
总之, 显式等待可以有效避免页面加载较慢或异步操作未完成导致的异常. 但也需要根据实际情况和需求合理使用.