如何使用水豚测试PDF文件的内容

问题描述 投票:0回答:1

我正在尝试访问http://www.orimi.com/pdf-test.pdf以测试是否存在“ PDF测试文件”。

这是我的代码:

it 'pdf test' do
        visit 'http://www.orimi.com/pdf-test.pdf'
        puts page.title
        sleep 5
        convert_pdf_to_page
        expect(page).to have_content 'PDF Test File'
end

def convert_pdf_to_page
        temp_pdf = Tempfile.new('pdf')
        temp_pdf << page.source.force_encoding('UTF-8')
        reader = PDF::Reader.new(temp_pdf)
        pdf_text = reader.pages.map(&:text)
        temp_pdf.close
        page.driver.response.instance_variable_set('@body', pdf_text)
end

但是我得到了:

PDF::Reader::MalformedPDFError: PDF does not contain EOF marker

我搜索后发现问题可能出在PDF文件中。我检查了temp_pdf变量,只有HTML带有一个空的正文。

我的代码有问题吗?

ruby selenium capybara
1个回答
1
投票

您不能只将页面源作为PDF文件。

[假设您使用的是Chrome,但其他浏览器类似,它会通过插件显示PDF,这意味着页面源实际上是HTML页面,而PDF通过<embed>元素显示。在Chrome中检查页面以查看其功能。

要执行您想做的事情,您需要单独下载PDF的源代码,使用PDF :: Reader对其进行解析,然后对文本进行断言。

您将not使用Capybara进行断言。

© www.soinside.com 2019 - 2024. All rights reserved.