我正在使用watir-webdriver和chromedriver (在Mac上)进行可视化测试。一旦它开始工作,我转而使用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格式完全存储(并有以.pdf结尾的URL ),要么由嵌入的PDF内容组成。这些网页没有正确地反映在:幻影:他们的@b.title或@b.url指向之前访问的页面。在:chrome的情况下,pdf页面的信息是可访问的,因此可用于测试目的。
由于PhantomJS是众所周知的,它能够产生PDF截图的网页,我很怀疑它不能打开网页上的PDF页面。
我是否正确地理解了PhantomJS没有PDF插件,或者我做错了什么?我将非常感谢任何关于在任何情况下对PDF页面进行无头测试的建议。
发布于 2015-02-16 23:53:06
你的问题的答案真的取决于你说“访问”时的意思。如果您的目的是呈现PDF和捕获图像,您可能在phantomJS所能做的之外,需要一个真正的浏览器。如果您的目的是解析PDF并访问文档中的文本,那么您可以遵循这个例子并使用一些JS库来处理PDF文件并通过PhantomJS运行它们。
在phantomJS能够呈现PDF的情况下,您做了以下假设:
由于PhantomJS是众所周知的,它能够产生PDF截图的网页,我很怀疑它不能打开网页上的PDF页面。
使用PDF规范将输出格式化为嵌入式图像是一回事。绘制PDF (包括图像、文本、文本效果、背景等)是另一件更加困难的事情。有很多程序可以用PDF格式“写”东西,但不能“读取”PDF文件。
PhantomJS的主要目的是允许在不需要浏览器和页面呈现开销的情况下执行Javascript代码。您可以使用它来做一些事情,比如测试JS代码,这是AJAX驱动的网页的一部分。您还可以使用它作为解释器来执行JS代码--我相信(但还没有找到确认)--出于性能原因,PhantomJS唯一一次真正产生呈现网页所需的开销是在创建屏幕截图时。此外,由于它是设计为无头的,有不支持插件,这是如何呈现的PDF通常是支持大多数浏览器。这将是主要的障碍,将阻止您实际呈现,然后捕获PDF‘页面’的截图。为此,您需要一个真正的浏览器,土坯或其他(foxit?)支持PDF的插件。然后,要运行无头,您需要使用类似于XVFB的东西。
https://stackoverflow.com/questions/28327988
复制相似问题