在 Selenium 中,显式等待是一种等待特定条件发生的机制。与隐式等待不同,显式等待只在需要的时候应用,并且可以针对特定的元素或条件进行等待。
显式等待通过不断地检查某个条件是否满足,直到超时时间到达或者条件满足为止。如果条件在超时时间内满足,测试将继续执行;如果条件在超时时间内未满足,将抛出一个异常。
以下是一个使用显式等待的示例:
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("https://example.com")
# 等待直到元素可见
element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "myElement")))
# 对元素进行操作
print(element.text)
driver.quit()
在上面的例子中,WebDriverWait类接受一个 WebDriver 实例和超时时间作为参数。until方法接受一个条件作为参数,这里使用了 EC.visibility_of_element_located条件来等待一个特定 ID 的元素变为可见。
显式等待可以使用的条件有很多,例如:
• EC.presence_of_element_located:等待元素出现在页面上,不一定可见。
• EC.element_to_be_clickable:等待元素变为可点击状态。
• EC.title_contains:等待页面标题包含特定的文本。
• EC.text_to_be_present_in_element:等待特定的文本出现在指定的元素中。
显式等待的优点是可以更加灵活地控制等待时间和条件,适用于那些需要等待特定元素出现或特定条件满足的场景。但需要注意的是,设置合理的超时时间很重要,过长的超时时间可能会导致测试执行时间过长,而过短的超时时间可能会导致等待失败。