Python Selenium 中的隐式等待

2023-04-17 00:00:00 python 等待 隐式

Python Selenium 中的隐式等待是指在页面加载过程中,程序会自动等待一段时间,直到页面加载完成后再进行后续操作。这段时间是根据程序设置的等待时间来确定的。如果在等待时间内页面加载完成,则会立即执行下一步操作。如果超过等待时间页面还没有加载完成,则会抛出异常。

隐式等待可以在创建 WebDriver 对象后设置:

from selenium import webdriver

browser = webdriver.Chrome()

# 设置隐式等待为 10 秒钟
browser.implicitly_wait(10)

接下来我们来看一个使用隐式等待的例子,假设我们需要在百度搜索框中输入关键字“皮蛋编程”,并点击搜索按钮,然后获取搜索结果的标题:

from selenium import webdriver

# 创建 WebDriver 对象,选择 Chrome 浏览器
browser = webdriver.Chrome()

# 设置隐式等待为 10 秒钟
browser.implicitly_wait(10)

# 打开百度首页
browser.get("https://www.baidu.com")

# 找到搜索框并输入关键字
search_box = browser.find_element_by_id("kw")
search_box.send_keys("皮蛋编程")

# 找到搜索按钮并点击
button = browser.find_element_by_id("su")
button.click()

# 等待页面加载完成
title = browser.title
print(title)

# 获取搜索结果的标题
results = browser.find_elements_by_css_selector(".result h3 a")
for result in results:
    print(result.text)

# 关闭浏览器
browser.quit()

在这个例子中,我们设置了 10 秒钟的隐式等待时间,如果页面在 10 秒钟内加载完成,则不会等待,直接执行下一步操作。如果超过 10 秒钟页面还没有加载完成,则会抛出异常。

注意:隐式等待时间是针对整个 WebDriver 对象的,也就是说,对所有操作都起作用。因此,在实际使用时需要根据实际情况来设置等待时间,避免等待时间过长造成不必要的等待。

相关文章