来源:互联网 更新时间:2026-06-28 14:01
说起来啊,在自动化测试这个圈子里,PDF 内容的验证常常是个被忽略的角落。但真要较真起来,它的重要性一点都不比 UI 验证低——毕竟,发片、合同这些关键信息,往往都装在 PDF 文件里。今天我们就来聊聊,如何在 Playwright 的框架下,结合 pdf-parse 和 fs 模块,把这件“靠谱”的事给做实了。

先说说 Playwright 为什么值得选。它是一款成熟的开源自动化测试工具,支持多浏览器、多平台,生态很完备。美中不足的是,它没有内置 PDF 验证功能。不过别担心,思路其实不复杂:先下载,再解析,最后比对文本就行。下面一步一步展开。
先把需要的依赖装上:
npm install playwright fs pdf-parse
npm init playwright@latest
用 Playwright 模拟用户点击,触发下载并保存文件。关键是同时监听下载事件,防止页面跳转把下载请求弄丢:
const { test, expect } = require('@playwright/test');
test('下载 PDF 文件', async ({ page }) => {
// 导航到包含 PDF 的页面
await page.goto('https://pdfobject.com/pdf/sample.pdf');
// 同时等待下载事件并触发下载
const [download] = await Promise.all([
page.waitForEvent('download'),
page.getByRole('link', { name: 'A Simple PDF File' }).click()
]);
// 保存文件到指定路径
const filePath = 'ExportData/' + download.suggestedFilename();
await download.sa veAs(filePath);
});
这段代码里,Promise.all 的作用是同时启动“等待下载”和“点击操作”,避免因异步时序错乱导致下载事件没捕获到——这是实际项目中很容易踩的坑。
下载到本地之后,用 pdf-parse 这个利器把 PDF 里的文字扒下来。解析结果可以直接保存为文本文件,方便后续对比:
const fs = require('fs');
const pdf = require('pdf-parse');
async function extractPdfText(filePath) {
try {
// 读取 PDF 文件内容
const dataBuffer = fs.readFileSync(filePath);
// 解析 PDF 获取文本
const data = await pdf(dataBuffer);
// 将提取的文本保存到 actual.txt
fs.writeFileSync('./ExportData/actual.txt', data.text);
} catch (error) {
// 处理解析失败的情况,比如 PDF 是纯图片格式
console.error('PDF 解析失败:', error);
}
}
// 调用函数提取文本
extractPdfText('./ExportData/sample.pdf');
注意 pdf-parse 对纯图片型 PDF 无能为力——那种情况下需要结合 OCR(如 Tesseract)来处理,这里不展开。
最后一步,把实际提取的文本和预期文本做对比。这一步用 Playwright 自带的 expect 断言就能搞定,非常干净:
test('验证 PDF 内容', async () => {
// 读取预期和实际文本内容
let expected = fs.readFileSync('./ExportData/expected.txt', 'utf-8');
let actual = fs.readFileSync('./ExportData/actual.txt', 'utf-8');
// 使用 Playwright 的 expect 断言内容一致
expect(actual).toBe(expected);
});
如果两个文件内容不匹配,测试就会失败,这时可以查看报告或日志,定位具体差异。
为了方便理解,整个项目的文件组织是这样的:
- ExportData
- actual.txt # 提取的实际文本
- expected.txt # 预期的文本
- sample.pdf # 下载的 PDF 文件
- node_modules # 依赖包
- playwright-report # 测试报告
- tests
- example.spec.js # 测试脚本
- package-lock.json
- package.json
- playwright.config.js
这种结构清晰、易维护,也方便在 CI/CD 中复用。
通过这三个步骤,在 Playwright 里实现 PDF 内容的自动化验证其实并不复杂。它不仅提升了测试的覆盖范围,也让我们对关键文档的准确性更有底。直接在项目里试一下吧,效果立竿见影。
archiveofourown 实战指南:常见用法整理
币安Binance虚拟货币交易平台 币安官方APP安卓苹果下载入口
HBO 奇幻剧《龙之家族》第三季定档 6 月 22 日,最终预告片曝光喉道海战
客单价碾压宝马奥迪!极氪5月交付新车34377辆:连续4个月双增长
折后价近千元 澳洲一店主将真老鼠缝到内裤上当时尚单品卖
电视剧《小欢喜》剧情介绍
如何在夸克浏览器中开启网页视频的倍速播放功能?
作家助手如何上传自制封面 作家助手如何设置小说的封面
全链网:黄金价格因美元的走强及利率担忧而下跌
欧易OKX官方网站直达入口 2026欧易官方App安卓版v7.1.0下载安装
有寓意的易经网名男生(精选100个)
植物娘大战僵尸电脑端与手机端存档转移的方法
网石18禁MMO《RAVEN2:渡鸦》大型更新推出全新职业“军阀”
动漫《柚木家的四兄弟》剧情介绍
《梦幻西游》159五开五门怎么搭配-159五开五门常见搭配
拼多多品牌好货是官方店铺吗?拼多多品牌好货是官方还是自营店铺
SpaceX狂揽AI人才,马斯克亲自面试且不看简历背景
腾讯元宝怎么用来分析股票基金的基本面信息?
美好的简约网名男生(精选100个)
独家/李宰旭入伍前「登上孤岛服役」 惊见前辈裸体:忍不住笑了
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc