您的位置:首页 > 汽车 > 新车 > 温州网站建设选择乐云seo_虾皮跨境电商网站_临沂百度公司地址_乔拓云网站建设

温州网站建设选择乐云seo_虾皮跨境电商网站_临沂百度公司地址_乔拓云网站建设

2025/1/8 1:14:33 来源:https://blog.csdn.net/weixin_49364648/article/details/144958631  浏览:    关键词:温州网站建设选择乐云seo_虾皮跨境电商网站_临沂百度公司地址_乔拓云网站建设
温州网站建设选择乐云seo_虾皮跨境电商网站_临沂百度公司地址_乔拓云网站建设

Selenium 的四种等待方式及使用场景

  1. 隐式等待(Implicit Wait)
  2. 显式等待(Explicit Wait)
  3. 自定义等待(Custom Wait)
  4. 固定等待(Sleep) 

1. 隐式等待

定义: 隐式等待是为 WebDriver 设置一个全局的超时时间,在此时间内,如果目标元素未出现,WebDriver 会定期轮询检查该元素是否存在,一旦找到立即继续执行后续代码。

适用场景:
适用于页面加载较慢但元素固定的场景,比如登录后的静态页面。

代码示例:

from selenium import webdriverdriver = webdriver.Chrome()# 设置隐式等待为10秒
driver.implicitly_wait(10)driver.get("https://example.com")
element = driver.find_element_by_id("some_element")
element.click()driver.quit()

2. 显式等待

定义: 显式等待是为某些特定的元素设置等待条件和超时时间,直到满足条件后才会继续执行。常用 WebDriverWait 类和 expected_conditions 模块。

适用场景:
适用于页面动态加载,元素需要特定条件才能出现的情况,例如弹窗加载、按钮变为可点击等。

常用条件:

  • presence_of_element_located:等待元素出现在 DOM 中,但不一定可见。
  • visibility_of_element_located:等待元素出现在 DOM 中且可见。
  • element_to_be_clickable:等待元素可见并可点击。

代码示例:

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 ECdriver = webdriver.Chrome()
driver.get("https://example.com")# 设置显式等待条件:等待某按钮元素可点击
wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.ID, "some_button")))
element.click()driver.quit()

3. 自定义等待

定义: 通过编写循环逻辑,自定义等待条件。适合复杂或独特的场景,比如需要检查某些动态值或自定义条件是否满足。

适用场景:
用于特殊条件判断,如根据页面元素的特定属性或文本值动态等待。

代码示例:

import time
from selenium import webdriverdriver = webdriver.Chrome()
driver.get("https://example.com")# 自定义等待
timeout = 10
poll_frequency = 0.5  # 每0.5秒检查一次
elapsed_time = 0while elapsed_time < timeout:try:element = driver.find_element_by_id("some_element")if element.is_displayed():print("Element found!")breakexcept:passtime.sleep(poll_frequency)elapsed_time += poll_frequency
else:print("Timeout: Element not found")driver.quit()

4. 固定等待

定义: 使用 Python 的 time.sleep() 方法,强制线程暂停指定的时间,无论目标元素是否已经加载完成。

适用场景:

  • 临时调试代码,观察执行过程。
  • 页面完全静态、加载时间稳定的场景。
  • 作为最后的兜底方案。

代码示例:

import time
from selenium import webdriverdriver = webdriver.Chrome()
driver.get("https://example.com")# 固定等待5秒
time.sleep(5)# 查找元素并点击
element = driver.find_element_by_id("some_element")
element.click()driver.quit()

四种等待方式对比

等待方式优点缺点适用场景
隐式等待全局生效,代码简洁不够灵活,无法单独为某元素设置等待条件静态页面,目标元素加载时间固定
显式等待灵活性高,可设置条件和单独的超时时间代码复杂,需要明确等待条件动态页面,特定元素需要等待某些条件完成时
自定义等待满足特定场景需求,可实现复杂逻辑条件判断需要手动实现逻辑,代码复杂条件特殊且显式等待无法满足的场景
固定等待简单直接,适合调试低效,不灵活,可能浪费时间调试代码、加载时间固定的静态场景

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com