恶作剧:剪裁截图

时间:2017-07-22 10:15:18

标签: capybara screenshot poltergeist

这是我的Poltergeist设置:

Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app, { screen_size: [1024, 768], window_size: [1024, 768] })
end

Capybara.default_driver = :poltergeist
Capybara.javascript_driver = :poltergeist

browser = Capybara.current_session
# browser.driver.resize(1024, 768)
# browser.driver.resize_window(1024, 768)
# browser.current_window.resize_to(1024, 768)

browser.visit('https://en.wikipedia.org/wiki/Poltergeist')
browser.save_screenshot('test.jpg')

屏幕截图的大小正确,但浏览器窗口本身也会被裁剪:

enter image description here

我也尝试了注释调整大小的方法,但没有解决这个问题。 什么可能导致浏览器窗口被裁剪?

1 个答案:

答案 0 :(得分:1)

Poltergeists渲染由PhantomJS控制。这看起来是由维基百科使用CSS引起的,PhantomJS要么不支持,要么有bug。不幸的是,PhantomJS(2.1.1)的当前发布版本基本上等同于Safari 5,所以它不太接近最新。有一些可能的解决方案。按努力顺序

  1. 如果您正在使用可以运行当前Poltergeist 2.5.0 beta版本之一的平台,请尝试使用它,因为它在CSS和JS支持方面更新了

  2. 使用execute_script注入Poltergeist支持的CSS并覆盖已损坏的CSS。特定于网站,因此,如果您不仅获得维基百科的屏幕截图,那么它可能不实用。

  3. 转换为使用无头镀铬的硒来生成屏幕截图。

  4. #3可能比#2容易,也可能不容易,具体取决于您的完整设置