selenium 确保页面完全加载 [复制链接]
发表于 2025-11-16 00:30:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在利用Python和Selenium举行Web主动化时,确保页面完全加载优劣常紧张的。为了实现这一点,Selenium提供了两种紧张范例的等候:显式等候(Explicit Waits)和隐式等候(Implicit Waits)。别的,尚有WebDriverWait团结Expected Conditions来更正确地控制等候。
隐式等候 (Implicit Wait)

隐式等候会告诉WebDriver在实行查找元素时(不但是第一次),在指定的时间内周期性地轮询DOM。默认设置为0。一旦设置了隐式等候时间,它将在WebDriver的生命周期内不停有效。
  1. from selenium import webdriver
  2. driver = webdriver.Chrome()
  3. driver.implicitly_wait(10)  # 等待10秒,如果在这期间找到元素则立即返回
复制代码
隐式等候实用于全部元素,但是如果你必要针对特定元素或条件等候,则应该思量利用显式等候。
显式等候 (Explicit Wait)

显式等候答应你的代码在一个特定条件下停息实行,直到等候的条件发生大概到达最大超时时间。显式等候比隐式等候更加机动,由于它可以针对特定的元素或条件。
WebDriverWait 类共同 expected_conditions 模块中的方法可以用来创建显式等候。比方:
  1. from selenium.webdriver.common.by import By
  2. from selenium.webdriver.support.ui import WebDriverWait
  3. from selenium.webdriver.support import expected_conditions as EC
  4. driver = webdriver.Chrome()
  5. # 打开网页
  6. driver.get('http://example.com')
  7. try:
  8.     # 等待最多20秒,直到ID为'myDynamicElement'的元素出现在DOM中并可见
  9.     element = WebDriverWait(driver, 20).until(
  10.         EC.presence_of_element_located((By.ID, "myDynamicElement"))
  11.     )
  12. finally:
  13.     driver.quit()
复制代码
在这个例子中,WebDriverWait 对象会每隔500毫秒查抄一次给定的条件(由 expected_conditions 界说),直到条件为真或高出20秒的超时时间。如果条件满足,那么 WebDriverWait 将返回该元素;如果超时,则抛出 TimeoutException。
Expected Conditions

expected_conditions 模块提供了多种预界说的条件,好比:


  • title_is: 等候页面标题即是特定值。
  • title_contains: 等候页面标题包罗特定字符串。
  • presence_of_element_located: 等候某个元素出现在DOM中,但不肯定可见。
  • visibility_of_element_located: 等候某个元素不但出现在DOM中而且是可见的。
  • element_to_be_clickable: 等候某个元素不但可见而且是可以点击的。
  • invisibility_of_element_located: 等候某个元素从DOM中消散或变得不可见。
  • text_to_be_present_in_element: 等候某个元素的文本包罗特定字符串。
  • frame_to_be_available_and_switch_to_it: 等候某个iframe可用,并切换到该iframe。
  • alert_is_present: 等候一个告诫框出现。
你可以根据现实的需求选择符合的条件来举行等候。显式等候通常比隐式等候更保举,由于它们可以提供更细粒度的控制,而且制止了全局影响。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表