Playwright 下载文件时页面被 Chrome 过滤的问题

1. 场景描述

在 RPA 或爬虫中,点击页面上的「导出」按钮时,正常流程是:

  • 点击导出 → 站点新开一个临时页面
  • 临时页面触发下载 → 关闭自身
  • Playwright 捕获 expect_popupexpect_download → 保存文件

但是在 谷歌浏览器(尤其是带安全策略的版本) 中,这种临时下载页有时会被 自动过滤/关闭

结果导致:

  • expect_popup() 捕获不到新页面,报错

  • 报错信息:

    r 复制代码
    Target page, context or browser has been closed
  • 文件有时能下,有时完全丢失。


2. 产生原因

  • Chrome 将下载跳转页识别为 弹窗,直接拦截关闭。
  • 导致 Playwright 监听的新页面「还没来得及挂钩,就被关闭了」。

3. 解决思路

方法一:只监听 expect_download(推荐)

如果下载操作 不依赖新页面 ,可以只写 expect_download

ini 复制代码
with page.expect_download(timeout=60000) as download_info:
    page.get_by_role("button", name="导出").click()
download = download_info.value
download.save_as("保存路径.xlsx")

这样即使 Chrome 把临时页面过滤掉,仍然能捕获下载事件。


方法二:新页面 + 下载双保险

有些网站必须开新页才能下载,这时需要同时监听:

ini 复制代码
try:
    with page.expect_popup() as popup_info:
        with page.expect_download(timeout=60000) as download_info:
            page.get_by_role("button", name="导出").click()
    popup = popup_info.value
    download = download_info.value
except Exception as e:
    # 如果新页面被 Chrome 过滤,退回到普通下载
    with page.expect_download(timeout=60000) as download_info:
        page.get_by_role("button", name="导出").click()
    download = download_info.value

download.save_as("保存路径.xlsx")

这样即便 新页面被过滤 ,也能退回到 expect_download 兜底。


方法三:优化 Chrome 启动参数

在启动 Chrome 时加上以下参数,减少下载页面被过滤的概率:

python 复制代码
command = [
    r"C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe",
    r"--remote-debugging-port=9222",
    r"--disable-popup-blocking",   # 禁用弹窗拦截
    r"--no-sandbox",
    r"--start-maximized"
]

4. 最佳实践

  1. 优先使用 expect_download → 更稳定。
  2. 必须新页面时 → 新页监听 + 普通下载兜底。
  3. 浏览器启动参数优化 → 禁用 popup 拦截。

5. 总结

这个问题的核心是:

  • Chrome 自动关闭了下载跳转页
  • Playwright 捕获不到新页面,报 Target page closed
  • 解决方案是:别依赖新页,用下载事件兜底,或者加启动参数避免拦截。
相关推荐
Caco_D8 天前
一行代码抓遍全网 20 个热榜!Aneiang.Pa 4.0 发布 — 极简 .NET 爬虫库
爬虫·.net
太岁又沐风13 天前
复现并修掉ART hook框架 Pine 调用原方法时的偶发 SIGSEGV
爬虫
隔窗听雨眠14 天前
大模型加爬虫上篇:技术融合与架构革新
爬虫·架构
Super Scraper14 天前
如何批量抓取 TikTok 数据而不被封锁?完整指南
爬虫·ai·自动化·抖音·tiktok·ai agent
深蓝电商API14 天前
自动化录屏 + 截图:打造爬虫调试的上帝视角
爬虫
tang7778914 天前
市场调研自动化采集架构:基于住宅IP轮换的APP数据抓取与反风控方案
爬虫·动态代理ip·爬虫代理ip·爬虫动态ip·住宅代理ip·动态住宅ip
数据知道14 天前
指纹浏览器环境的导入、导出、快照与云端同步机制
爬虫·数据采集·指纹浏览器
星川皆无恙14 天前
大数据k-means聚类算法:基于k-means聚类算法+NLP微博舆情数据爬虫可视化分析推荐系统(新版)
大数据·人工智能·爬虫·算法·机器学习·自然语言处理·kmeans
小二·14 天前
Rust 爬虫与数据处理实战:大规模并发抓取 + 流式处理
开发语言·爬虫·rust