1

我正在使用 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 响应,但似乎没有办法提取它。

所以我们需要一个解决方案,我认为我们有以下选择:

  1. 使用来自 Watir 的会话找出在 Ruby 中使用“open”或类似方法的方法。
  2. 弄清楚如何使用 watir 从 PDF 页面获取二进制 http 响应。
  3. 禁用 pdf 插件(这似乎不可能),以便出现“另存为”对话框。

或者如果您有其他想法,请分享!提前致谢!

4

1 回答 1

1

我想出了一个解决办法。

在 firefox 的配置文件中,您可以将 plugin.scan.Acrobat 设置为“999”,这将有效地禁用 PDF 插件。

    profile = Selenium::WebDriver::Firefox::Profile.new
    profile['plugin.scan.Acrobat'] = "999"
    b = Watir::Browser.new :firefox, :profile => profile
于 2012-07-09T19:43:36.483 回答