访问PhantomJS的PDF网页(Watir,GhostDriver)

时间:2015-02-04 17:47:53

标签: pdf phantomjs watir-webdriver headless

我正在使用watir-webdriver和chromedriver(在Mac OS X上)进行可视化测试。一旦开始工作,我就使用PhantomJS切换到无头测试。

def browser_init
  client = Selenium::WebDriver::Remote::Http::Default.new
  client.timeout = @browser_timeout 

  case @browsing_type
    when 'visual'
      @b = Watir::Browser.new :chrome, :http_client => client
    when 'headless'
      @b = Watir::Browser.new :phantomjs, :http_client => client
  end
end 

这是我的问题和问题。我测试的一些网页要么完全以PDF格式存储(并且URL以.pdf结尾),要么包含嵌入的PDF内容。这些网页未在:phantomjs 案例中正确反映:他们的 @ b.title @ b.url 指向之前访问过的网页。在:chrome 的情况下,pdf页面的这些信息是可访问的,因此可用于测试目的。

由于PhantomJS因其能够制作网页的PDF屏幕截图而闻名,我怀疑它无法在网上打开PDF页面。

我是否理解PhantomJS没有PDF插件或我做错了什么?在任何一种情况下,我都非常感谢任何关于PDF页面无头测试的建议。

1 个答案:

答案 0 :(得分:0)

您的问题的答案实际上取决于您说“访问”时的含义。如果你的目的是渲染PDF并捕获一个图像,那么你可能不在幻想中,可能需要一个真正的浏览器。 OTOH如果您的目的是使PDF文档并访问文档中的文本,那么您可以关注this example并使用一些JS库来处理PDF文件并通过PhantomJS运行它们

就幻影能够呈现PDF而言,您做出了以下假设:

  

由于PhantomJS因其生产PDF的能力而闻名   网页截图,我怀疑它无法打开   网页上的PDF页面。

使用PDF规范将输出格式化为嵌入图像是一回事。渲染PDF(包括图像,文本,文本效果,背景等)是另一个更困难的事情。有很多程序可以用PDF格式“编写”但不能“读取”PDF文件。

PhantomJS的主要目的是允许执行Javascript代码,而无需浏览器和页面呈现的开销。您可以使用它来执行测试JS代码,这是AJAX驱动的Web页面的一部分。您也可以使用它作为解释器来执行JS代码我相信(但是没有找到确认),出于性能原因,PhantomJS实际上只会产生渲染网页所需的开销是创建屏幕截图的时间。此外,因为它设计为无头,所以no support for plugins就是大多数浏览器通常支持PDF的渲染。这将是阻止您实际渲染然后捕获PDF“页面”屏幕截图的主要障碍。为此你需要一个支持PDF的真实浏览器,adobe或其他(foxit?)插件。然后要运行无头,你需要使用类似XVFB的东西。