📜  如何使用 selenium python 等待加载图标从页面中消失(1)

📅  最后修改于: 2023-12-03 15:23:57.648000             🧑  作者: Mango

使用 Selenium Python 等待加载图标从页面中消失

在进行网页自动化测试时,经常会遇到加载过程中出现了一个加载图标,如何等待加载图标从页面中消失再进行下一步操作是一个需要解决的问题。在使用 Selenium Python 进行网页自动化测试中,有多种等待方式可以实现解决这个问题。

1. 使用固定等待时间

最简单、粗暴的方法就是使用固定的等待时间来等待加载图标消失。这种方法的缺点是,如果等待时间设置过短,会导致测试失败;如果等待时间设置过长,又会浪费时间。因此,只有在确定加载时间比较固定的情况下,才可以使用固定等待时间的方法。

import time
from selenium import webdriver

driver = webdriver.Chrome()

# 打开网页
driver.get("http://example.com")

# 等待5秒
time.sleep(5)

# 等待加载图标消失后进行下一步操作
# ...
2. 使用隐式等待

使用隐式等待可以设置一个最长等待时间,在这个时间内,如果 WebDriver 没有找到需要的元素,就会抛出 NoSuchElementException 异常。这种方式可以大大减少测试失败的概率,提高测试稳定性。

from selenium import webdriver

driver = webdriver.Chrome()

# 设置最长等待时间为10秒
driver.implicitly_wait(10)

# 打开网页
driver.get("http://example.com")

# 等待加载图标消失后进行下一步操作
# ...
3. 使用显式等待

使用显式等待可以设置一个等待条件,一旦条件成立就继续执行下一步操作,否则等待一定时间后重复检测条件是否成立。这种方式相比于固定等待时间和隐式等待,更为灵活,可以根据不同的需求来设置等待条件。

以下是一个示例代码:

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

driver = webdriver.Chrome()

# 打开网页
driver.get("http://example.com")

# 等待加载图标消失,超时时间设置为10秒
wait = WebDriverWait(driver, 10)
wait.until(EC.invisibility_of_element_located((By.ID, "loader")))

# 等待加载图标消失后进行下一步操作
# ...

在这个代码中,等待条件使用了 expected_conditions.invisibility_of_element_located(),它表示等待 ID 为 "loader" 的元素在网页中不可见。只有等待条件满足了,才会进行下一步操作。

以上就是使用 Selenium Python 等待加载图标从页面中消失的几种方法,请根据自己的需求选择合适的方式。