You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Selenium:无需等待页面加载即可新建标签页

解决方案

问题根源在于Selenium默认的页面加载策略:driver.get()会等待页面完全加载完成(包括所有图片、资源)才会执行后续代码,导致每个标签页都要等待1分钟。要实现"加载同时新建下一个标签页",核心是修改加载策略,让Selenium无需等待页面完全加载即可继续执行。

具体修改步骤

  1. 设置页面加载策略:通过ChromeOptions添加page_load_strategy,可选值:
    • eager:等待DOM结构加载完成(document.readyState变为interactive),无需等待图片、视频等资源,平衡速度和页面可用性
    • none:完全不等待页面加载,执行driver.get()后立即继续后续操作
  2. 调整循环逻辑:避免创建多余空标签页,确保最终生成10个目标URL标签页

修改后的代码

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.window import WindowTypes
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec

options = webdriver.ChromeOptions()
options.add_experimental_option("detach", True)
options.add_argument("start-maximized")
# 设置为eager策略,DOM加载完成就继续执行
options.page_load_strategy = 'eager'

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
url = 'http://my_url/Index'

# 打开第一个标签页
driver.get(url)

# 循环创建剩余9个标签页,总共10个
for _ in range(9):
    # 新建空白标签页
    driver.switch_to.new_window(WindowTypes.TAB)
    # 访问目标URL,此时不会等待页面完全加载
    driver.get(url)

# 可选:如果需要确保最后一个标签页加载完成,添加等待
# WebDriverWait(driver, 60).until(ec.pageloaded)

补充说明

  • 若使用none策略,页面可能还在后台加载,但代码会继续执行,适合完全不需要等待页面元素的场景
  • 之前尝试的time.sleep()、WebDriverWait都是主动等待加载,反而会阻塞流程,因此需要通过加载策略从根源解决阻塞问题

内容的提问来源于stack exchange,提问作者Sagar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 08:05:14