我正在使用 Watir 登录应用程序,按下一些按钮等......基本上是人们使用 Watir 的普通东西。
但是,我的问题是我需要测试一个特定的页面。它实际上是一个动态生成的 PDF,我需要从中获取实际的二进制数据,以便我可以使用我们正在使用的某个 gem 加载它。这通常适用于静态 PDF 文件,因为我们可以使用:
open("http://site.com/something.pdf")
这适用于静态 PDF。但是,对于动态生成的,它不起作用,因为我们使用 Ruby 发送 HTTP 请求,并且它不知道 Watir 正在使用的 headers/cookies/session。因此,我们没有获得实际的 PDF,而是获得了一个登录页面。
我们尝试的另一件事是使用 Watir 获取 PDF:
@browser.goto "http://site.com/dynamic/thepdffile"
@browser.text
@browser.html
我们尝试从页面中获取文本或 html,但没有成功,因为 firefox 在加载 pdf 时创建了一个 DOM,因此文本是一个空字符串,而 html 是 firefox 在查看 pdf 页面时创建的 DOM。我们需要原始的 HTTP 响应,但似乎没有办法提取它。
所以我们需要一个解决方案,我认为我们有以下选择:
- 使用来自 Watir 的会话找出在 Ruby 中使用“open”或类似方法的方法。
- 弄清楚如何使用 watir 从 PDF 页面获取二进制 http 响应。
- 禁用 pdf 插件(这似乎不可能),以便出现“另存为”对话框。
或者如果您有其他想法,请分享!提前致谢!