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
  • 解决方案是:别依赖新页,用下载事件兜底,或者加启动参数避免拦截。
相关推荐
Yan-英杰3 小时前
从“投屏“到“办公“,ToDesk鸿蒙版4.8.0.0补齐远控“进入→处理→离开“全流程
服务器·人工智能·爬虫·机器学习·ai开发工具
深蓝电商API4 小时前
Redis 在分布式爬虫中的作用
redis·分布式·爬虫
K哥爬虫1 天前
【验证码逆向专栏】某美世界卡状态查询滑块逆向分析
爬虫
万象观察录1 天前
API面临越权、爬虫、撞库等风险,有什么解决方案?
爬虫
CDN3601 天前
爬虫把价格库扒光、SQL注入打穿数据库?360CDN WAF规则引擎深度定制,把防护精度拉到逐字段级
数据库·爬虫·sql
深蓝电商API1 天前
Scrapy 架构源码解析
爬虫·scrapy
IT毕设实战小研2 天前
基于大数据的WTA职业网球赛事演变与竞技格局数据可视化分析
大数据·后端·爬虫·python·信息可视化·课程设计
2601_962382432 天前
用“爬虫”抓取小红书内容侵权吗 福建法院判明边界
爬虫·数字经济·知识产权·不正当竞争·福建法院
Mycdn_WD2 天前
从 AI 爬虫变多了到 AI 抓取开始分流,CDN 行业进入下一阶段
人工智能·爬虫·cdn·pcdn·城域网·pcdn资源招募
该逃避避3 天前
爬虫代理配置指南:从0搭建Crawl4AI网页爬虫教程
爬虫