从Ruby Watir阅读动态PDF

时间:2012-07-05 15:27:08

标签: ruby pdf watir

我正在使用Watir登录应用程序,按下某些按钮等...基本上是一个人会使用Watir的正常内容。

但是,我的问题是我需要测试一个特定的页面。它实际上是一个动态生成的PDF,我需要从中获取实际的二进制数据,以便我可以使用我们正在使用的某个gem加载它。这通常适用于静态PDF文件,因为我们可以使用:

    open("http://site.com/something.pdf")

这适用于静态PDF。但是,对于动态生成的一个,它不起作用,因为我们使用Ruby发送HTTP请求,并且它不知道Watir正在使用的头/ cookie /会话。因此,我们不会获得实际的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 个答案:

答案 0 :(得分: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
相关问题