Token导航 LogoToken导航

Agent Skill · 研究检索

playwright-download-fix(Playwright download FIX 搜索)

用于辅助测试设计、自动化测试、用例整理和回归验证。它适合让 Agent 编写单元测试、端到端测试、测试计划或根据失败日志定位问题。使用时需要确认项目测试框架、运行命令和夹具数据,避免为了通过测试而改坏真实逻辑;涉及浏览器或外部服务时,应区分本地模拟、测试环境和生产环境。

playwright-download-fix 是研究检索类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为操作浏览器;许可证为 MIT-0,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 17,372。

总安装 6,639周安装 266GitHub Stars 公开资料未说明下载 2,149核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
1.0.1

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:playwright-download-fix(Playwright download FIX 搜索)
来源仓库:https://github.com/squall0925/playwright-download-fix
安装命令:
openclaw skills install playwright-download-fix
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install playwright-download-fix

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

自动处理 Playwright 下载文件名问题,监听下载事件并用正确的原始文件名保存文件。解决 Playwright 下载的文件名是 UUID 而不是原始文件名的问题。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install playwright-download-fix;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要操作浏览器,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

playwright-download-fix 怎么安装?

在终端执行 openclaw skills install playwright-download-fix。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

playwright-download-fix 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

playwright-download-fix 需要什么权限?

权限级别是操作浏览器。该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

playwright-download-fix 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

playwright-download-fix 用的人多吗?

公开数据是累计安装 6,639 次,近一周安装 266 次,下载 2,149 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

playwright-download-fix 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。
  • 需要许可证清楚、并且有第三方扫描结果的团队项目。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
playwright-download-fix

Playwright download FIX 搜索 · 本页

6,639—操作浏览器MIT-0通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

name
Playwright Download Fix
description
自动处理 Playwright 下载文件名问题,监听下载事件并用正确的原始文件名保存文件。解决 Playwright 下载的文件名是 UUID 而不是原始文件名的问题。

Playwright Download Fix

Playwright 下载的文件名是 UUID 而不是原始文件名?这个 skill 帮你自动修复这个问题。

问题

当使用 Playwright 下载文件时,经常会遇到:

  • 浏览器中显示的文件名是 f63a84ec-abd1-48fa-a748-11ebeca07935(UUID)
  • 但在真实 Chrome 中下载的文件名是正确的,比如 MVIMG_20250706_131754.jpg

原因

  1. Playwright 默认下载到临时目录,使用 UUID 作为临时文件名
  2. 网站检测到自动化工具,返回了临时文件名
  3. 需要拦截 download 事件并使用 suggestedFilename() 获取原始文件名

解决方案

这个 skill 提供了一个 DownloadHelper 模块,自动监听下载事件并用正确的文件名保存文件。


🚀 快速启动

方式 1: 使用 pw-start 命令(推荐)

确保快捷命令已添加到 shell 配置文件:

\\\`bash

添加到 ~/.zshrc(首次使用)

echo "alias pw-start='cd ~/.openclaw-autoclaw/workspace && node pw-start.js'" >> ~/.zshrc source ~/.zshrc

使用

pw-start # 打开默认页面(智联招聘) pw-start https://example.com # 打开指定 URL \\\`

每次运行都会自动加载 DownloadHelper skill 并显示配置信息:

========================================
📋 配置信息
========================================
🌐 User-Agent: 真实 Chrome (macOS)
📂 下载目录: /Users/allen/downloads
🔍 调试模式: 开启
========================================

方式 2: 直接运行独立脚本

\\\bash cd ~/.openclaw-autoclaw/skills/playwright-download-fix node standalone-script.js \\\

方式 3: 在现有项目中集成模块

\\\`bash

复制模块到项目

cp ~/.openclaw-autoclaw/skills/playwright-download-fix/download-helper.js . \\\`

然后在脚本中使用:

\\\`javascript const { chromium } = require('playwright'); const DownloadHelper = require('./download-helper');

async function myScript() { const browser = await chromium.launch({ headless: false }); const context = await browser.newContext({ acceptDownloads: true, });

const page = await context.newPage();

// 初始化下载助手 const helper = new DownloadHelper(page, { downloadDir: '~/downloads', debug: true }); const downloadDir = await helper.setup(); console.log(\📂 下载目录: \${downloadDir}\);

// 你的自动化代码... await page.goto('https://example.com'); await page.click('#download-button');

// 获取下载的文件列表 console.log('下载的文件:', helper.getDownloadedFiles());

await browser.close(); }

myScript(); \\\`


📋 启动环境与要求

系统要求

  • 操作系统: macOS / Linux / Windows
  • Node.js: >= 14.x
  • Playwright: 已安装

依赖安装

\\\`bash

安装 Playwright(如果未安装)

npm install playwright

安装浏览器

npx playwright install chromium \\\`

启动条件

  1. 下载目录权限: 确保对下载目录(默认 ~/downloads)有写权限
  2. 浏览器缓存: 首次运行会下载 Chromium(约 170MB)
  3. 内存要求: 至少 4GB 可用内存
  4. 网络连接: 部分网站需要网络访问

启动配置

默认配置(可在 pw-start.js 中修改):

配置项默认值说明
User-AgentChrome 122.0.0.0 (macOS)模拟真实浏览器
Localezh-CN中文环境
TimezoneAsia/Shanghai中国时区
下载目录~/downloads文件保存位置
调试模式开启显示下载信息

反自动化检测

为了更接近真实浏览器,默认启用以下配置:

\\\javascript const context = await browser.newContext({ userAgent: realChromeUA, locale: 'zh-CN', timezoneId: 'Asia/Shanghai', bypassCSP: true, javaScriptEnabled: true, acceptDownloads: true, }); \\\


DownloadHelper API

构造函数

\\\javascript new DownloadHelper(page, options) \\\

参数:

  • \page\ (Page) - Playwright page 实例
  • \options\ (Object) - 配置选项

- \downloadDir\ (string) - 下载目录路径,支持 \~\ 符号,默认 \~/downloads\ - \debug\ (boolean) - 是否显示调试信息,默认 \false\

方法

setup()

初始化下载监听器,创建下载目录(如果不存在)。

\\\javascript const downloadDir = await helper.setup(); \\\

返回: 下载目录的绝对路径

getDownloadedFiles()

获取本次会话中下载的所有文件路径列表。

\\\javascript const files = helper.getDownloadedFiles(); console.log('下载的文件:', files); \\\

返回: 文件路径数组

clearHistory()

清空下载历史记录。

\\\javascript helper.clearHistory(); \\\

dispose()

移除下载监听器。

\\\javascript helper.dispose(); \\\


完整示例

示例 1: 下载单个文件

\\\`javascript const { chromium } = require('playwright'); const DownloadHelper = require('./download-helper');

async function downloadSingle() { const browser = await chromium.launch({ headless: false }); const context = await browser.newContext({ acceptDownloads: true, });

const page = await context.newPage();

const helper = new DownloadHelper(page, { downloadDir: '~/downloads', debug: true }); await helper.setup();

await page.goto('https://example.com'); await page.click('#download-button'); await page.waitForTimeout(3000);

const files = helper.getDownloadedFiles(); console.log('下载的文件:', files);

await browser.close(); }

downloadSingle(); \\\`

示例 2: 批量下载

\\\`javascript const { chromium } = require('playwright'); const DownloadHelper = require('./download-helper');

async function downloadMultiple(urls) { const browser = await chromium.launch({ headless: false }); const context = await browser.newContext({ acceptDownloads: true }); const page = await context.newPage();

const helper = new DownloadHelper(page, { downloadDir: '~/downloads', debug: true }); await helper.setup();

for (const url of urls) { await page.goto(url); await page.click('.download-link'); await page.waitForTimeout(2000); }

console.log(\共下载 \${helper.getDownloadedFiles().length} 个文件\);

await browser.close(); }

downloadMultiple(['url1', 'url2', 'url3']); \\\`

示例 3: 智联招聘下载简历

\\\`javascript const { chromium } = require('playwright'); const DownloadHelper = require('./download-helper');

async function downloadResumes() { const browser = await chromium.launch({ headless: false }); const context = await browser.newContext({ userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36', acceptDownloads: true, });

const page = await context.newPage();

const helper = new DownloadHelper(page, { downloadDir: '~/downloads', debug: true }); await helper.setup();

// 导航到搜索页面 await page.goto('https://rd6.zhaopin.com/app/search');

// 手动登录...

// 搜索候选人并下载简历 // ...

await browser.close(); }

downloadResumes(); \\\`


工作原理

  1. 监听下载事件:通过 \page.on('download', ...)\ 监听所有下载
  2. 获取原始文件名:使用 \download.suggestedFilename()\ 获取服务器返回的真实文件名
  3. 保存到指定目录:用正确的文件名保存到用户指定的目录
  4. 追踪下载历史:记录所有下载的文件路径,方便后续处理

故障排除

问题 1: 下载的文件名仍然是 UUID

可能原因:

  • 网站检测到了自动化工具
  • User-Agent 不够真实
  • 缺少必要的请求头

解决方案:

  1. 使用更真实的 User-Agent
  2. 添加更多请求头
  3. 考虑使用 \puppeteer-extra-plugin-stealth\
  4. 连接到真实的 Chrome 实例(CDP)

\\\javascript // 连接真实 Chrome const browser = await chromium.connectOverCDP('http://localhost:9222'); \\\

问题 2: 文件下载失败

可能原因:

  • 未设置 \acceptDownloads: true\
  • 下载目录无写权限
  • 网络问题

解决方案: \\\`javascript // 1. 确保设置 acceptDownloads const context = await browser.newContext({ acceptDownloads: true, // 必须设置 });

// 2. 检查目录权限 fs.accessSync(downloadDir, fs.constants.W_OK);

// 3. 查看 debug 输出 const helper = new DownloadHelper(page, { debug: true }); \\\`

问题 3: 文件保存位置不对

可能原因:

  • \downloadDir\ 配置错误
  • 相对路径解析问题

解决方案: \\\`javascript // 使用绝对路径 const helper = new DownloadHelper(page, { downloadDir: '/Users/yourname/Downloads', // 绝对路径 });

// 或使用 ~ 符号 const helper = new DownloadHelper(page, { downloadDir: '~/downloads', // 会自动解析为用户主目录 }); \\\`

问题 4: pw-start 命令未找到

解决方案: \\\`bash

添加快捷命令

echo "alias pw-start='cd ~/.openclaw-autoclaw/workspace && node pw-start.js'" >> ~/.zshrc

重新加载配置

source ~/.zshrc

或重启终端

\\\`


配置文件说明

pw-start.js

主启动脚本,位于 \~/.openclaw-autoclaw/workspace/pw-start.js\

可配置项: \\\javascript const CONFIG = { userAgent: '...', // 自定义 User-Agent locale: 'zh-CN', // 语言 timezoneId: 'Asia/Shanghai', // 时区 downloadDir: '~/downloads', // 下载目录 debug: true, // 调试模式 defaultUrl: '...' // 默认 URL }; \\\

standalone-script.js

独立运行脚本,位于 \~/.openclaw-autoclaw/skills/playwright-download-fix/standalone-script.js\

特点:

  • 默认打开智联招聘搜索页
  • 完整的下载事件监听

download-helper.js

核心模块,可复制到任何项目使用。


使用场景

场景 1: 智联招聘下载简历

\\\`bash pw-start

浏览器自动打开智联招聘

手动登录后下载简历

文件自动保存到 ~/downloads

\\\`

场景 2: 任何需要下载的网站

\\\`bash pw-start https://example.com

在浏览器中操作

下载的文件会自动用正确的文件名保存

\\\`

场景 3: 开发测试

\\\`bash pw-start http://localhost:3000

测试本地开发环境的下载功能

\\\`

场景 4: 批量下载任务

在自动化脚本中集成 \DownloadHelper\,实现批量下载。


常见问题

Q: 如何查看下载的文件?

\\\bash ls ~/downloads \\\

Q: 支持其他浏览器吗?

当前仅支持 Chromium,但可以通过修改 \pw-start.js\ 使用 Firefox 或 WebKit:

\\\javascript const { firefox } = require('playwright'); const browser = await firefox.launch(); \\\


相关文件

  • \download-helper.js\ - 核心下载处理模块
  • \standalone-script.js\ - 独立运行脚本
  • \pw-start.js\ - 快速启动脚本(位于 workspace)
  • \example.js\ - 使用示例
  • \README.md\ - 快速指南

许可

MIT

平台分布

OpenClaw

74.39%
按下载量换算1,599

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills