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

Cypress使用指南:如何通过Cypress命令验证PDF文件中的数据

Cypress PDF内容校验问题解决方法

问题原因

pdf-parse库解析完成后返回的是包含6个属性的对象,你直接打印整个对象就会显示object{6},其中只有text属性存储了PDF的纯文本内容。

解决方案

方案1:不修改插件代码,直接在测试用例中取值

调整spec文件的代码如下:

it('tests a pdf', () => {
    cy.task('getPdfContent', 'sample.pdf').then(pdfData => {
        // 提取PDF文本内容
        const pdfContent = pdfData.text
        // 打印文本内容
        cy.log(pdfContent)
        // 校验文本是否包含指定内容
        expect(pdfContent).to.contain('你需要匹配的内容')
        // 按行拆分后校验指定行内容
        const contentLines = pdfContent.split(/\n|\r\n/)
        expect(contentLines[1]).to.eq('第二行预期内容')
    })
})

方案2:修改插件代码直接返回文本内容

调整plugins/index.js中的parsePdf函数,直接返回文本,后续调用无需再额外取值:

const parsePdf = async (pdfName) => {
  const pdfPathname = path.join(repoRoot, pdfName)
  let dataBuffer = fs.readFileSync(pdfPathname);
  const pdfResult = await pdf(dataBuffer)
  // 直接返回纯文本内容
  return pdfResult.text
}

修改后spec文件中拿到的返回值就是纯文本,可以直接打印和校验:

it('tests a pdf', () => {
    cy.task('getPdfContent', 'sample.pdf').then(pdfContent => {
        cy.log(pdfContent)
        expect(pdfContent).to.contain('预期内容')
    })
})

注意事项

  • 先确认项目已安装pdf-parse依赖,未安装可执行命令:npm install pdf-parse --save-dev
  • 确认路径配置中的sample.pdf文件真实存在,可在parsePdf函数中打印pdfPathname确认路径是否正确
  • 扫描版的图片格式PDF无法通过pdf-parse提取文本,需要配合OCR工具处理
  • 如果PDF设置了加密权限,也会导致提取文本失败

内容的提问来源于stack exchange,提问作者Shivam Shah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:54:04