Cucumber-Capybara:save_screenshot(path,full:true)没有捕获完整的浏览器?

时间:2017-04-06 11:44:17

标签: cucumber capybara

我正在使用最新的Chrome浏览器,版本57.0.2987.133(64位),以及最新的chromedriver v2.29(虽然我已尝试使用Chrome 56和chromedriver 2.27)并且我有一个测试失败时我无法捕获完整浏览器的问题。

这是我在env.rb文件中的代码:

Capybara::Screenshot.register_driver(:chrome) do |driver, path|
  driver.browser.save_screenshot(path, full: true)
end

但是,我得到的截图只是部分内容,我可以在屏幕上看到而不是完整的浏览器。

我知道我做错了什么或者我可以尝试不同的东西吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

由于你正在使用chrome,我假设你正在使用selenium驱动程序(selenium-webdriver)。 selenium驱动程序不支持传递给save_screenshot的任何选项,并且将选项传递给page.driver.screenshot - https://github.com/SeleniumHQ/selenium/blob/master/rb/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb#L34 - 会引发太多参数错误(在您的情况下我假设capybara_screenshot宝石捕捉和忽略)并没有保存截图。如果你打电话给driver.save_screenshot(path, full: true),它会拍摄,但是任何传递的选项都会被忽略,因为它们不受支持。此外,由于WebDriver规范被定义为拍摄视口(可见窗口),我不希望selenium很快支持全屏幕镜头。

如果您使用selenium作为屏幕截图并且想要更大,那么您唯一的选择就是在拍摄屏幕截图之前增加窗口大小。