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

Python Selenium捕获触发打开的新标签页并保存下载网页方法

Selenium 捕获操作触发的新标签页并完成资源下载实现

核心实现逻辑

触发跳转动作前先记录当前所有浏览器标签页的句柄,跳转触发后等待新标签页加载完成,通过句柄差集定位到新标签页,切换上下文后即可执行页面操作、资源下载等逻辑。

原有代码问题修正

  • 下拉框定位错误:原代码用find_elements取ID为jumpMenu2的元素,实际页面上下拉菜单ID为jumpMenu,且find_elements返回的是元素列表,无法直接操作
  • JS赋值逻辑无效:原代码直接执行value="xxx"没有绑定到对应下拉框DOM节点,赋值不生效
  • 缺少窗口监听逻辑:触发跳转前未记录原有窗口句柄,跳转后无法定位新打开的标签页

完整可运行代码

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import requests

# 初始化浏览器
driver = webdriver.Chrome(ChromeDriverManager().install())
wait = WebDriverWait(driver, 10)

# 打开目标页面
driver.get('https://planning.lacity.org/development-services/eir/kaiser-permanente-los-angeles-medical-center-project-0')

# 1. 记录触发跳转前的所有窗口句柄
original_windows = set(driver.window_handles)

# 2. 定位下拉框,设置选中值
dropdown = wait.until(EC.presence_of_element_located((By.ID, "jumpMenu")))
# 绑定DOM节点执行赋值,避免全局JS执行无效问题
driver.execute_script("arguments[0].value='DEIR PDFs/00.DEIR Cover_Kaiser.pdf';", dropdown)

# 3. 触发跳转逻辑
driver.execute_script("MM_jumpMenuGo('jumpMenu','parent',1)")

# 4. 等待新标签页打开
wait.until(EC.number_of_windows_to_be(len(original_windows) + 1))

# 5. 定位新标签页句柄并切换
new_window = [win for win in driver.window_handles if win not in original_windows][0]
driver.switch_to.window(new_window)

# 6. 下载新页面中的PDF资源
pdf_url = driver.current_url
response = requests.get(pdf_url)
with open("DEIR_Cover.pdf", "wb") as f:
    f.write(response.content)

# 操作完成后如果需要切回原标签页,执行以下语句即可
# driver.switch_to.window(list(original_windows)[0])

额外说明

  • 如果新打开的是普通网页而非静态文件,切换到新标签页句柄后,就可以和平常一样用find_element等API操作页面元素
  • 下载静态PDF/文件类资源时,直接拿新标签页的URL发请求下载,比等待浏览器内置阅读器加载渲染效率高很多
  • 多标签页操作全程要注意当前driver绑定的窗口句柄上下文,切错句柄会导致元素定位失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:24:25