python中3种等待元素出现的方法总结

  • Post category:Python

当我们使用Python编写自动化测试脚本时,经常需要在网页中等待某个元素的出现或完成某个操作。这时就需要使用等待元素出现的方法。Python中常用的等待元素出现的方法有三种:显性等待、隐性等待和强制等待。

1. 显性等待

显性等待是指在指定时间内等待特定的元素出现或特定的条件成立,如果满足条件就继续执行下一步操作,如果超时仍没有满足条件就抛出TimeoutException异常。一般使用WebDriverWait类和expected_conditions模块实现。

下面的示例代码中演示了等待某个元素出现,并点击该元素的操作:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待元素出现
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "element_id"))
)
# 点击该元素
element.click()

在上面的示例中,我们先导入了WebDriverWait、By和expected_conditions模块。然后使用WebDriverWait类初始化了一个等待对象。在初始化方法中传递了driver和最长等待时间参数(10秒)。接下来使用until()方法,并传递EC.presence_of_element_located()方法作为条件,等待ID为”element_id”的元素出现。如果10秒内该元素未出现,则抛出TimeoutException异常。

2. 隐性等待

隐性等待是指在页面加载的过程中,如果代码在调用时找不到某个元素,会等待一段时间然后再次尝试访问该元素,如果超时仍然找不到,就会抛出NoSuchElementException异常。一般使用implicitly_wait()方法设置等待时间。

下面的示例代码中演示了隐性等待的使用方法:

# 设置隐性等待时间为10秒
driver.implicitly_wait(10)

# 操作页面元素
element = driver.find_element_by_id("element_id")
element.click()

在上面的示例中,我们使用implicitly_wait()方法,将隐性等待时间设置为10秒,然后使用find_element_by_id()方法查找ID为”element_id”的元素。如果找不到该元素,则会等待10秒后再次尝试查找,直到找到该元素或者超时抛出NoSuchElementException异常。

3. 强制等待

强制等待是指在程序执行到该语句时,强制等待指定的时间,然后再继续执行下一步操作。一般使用time模块中的sleep()方法实现。

下面的示例代码中演示了强制等待的使用方法:

import time

# 强制等待5秒
time.sleep(5)

# 操作页面元素
element = driver.find_element_by_id("element_id")
element.click()

在上面的示例中,我们使用time模块的sleep()方法,强制等待5秒后再进行后续操作。

综上所述,我们介绍了Python中3种等待元素出现的方法,分别是显性等待、隐性等待和强制等待。在实际自动化测试中,我们可以根据具体情况选择合适的方法。