Cucumber Capybara:save_屏幕截图(路径,full:true)未捕获完整浏览器?

Cucumber Capybara:save_屏幕截图(路径,full:true)未捕获完整浏览器?,cucumber,capybara,Cucumber,Capybara,我正在使用最新的Chrome浏览器版本57.0.2987.133(64位)和最新的chromedriver v2.29(尽管我也尝试过Chrome56和chromedriver 2.27),我遇到了一个问题,当测试失败时,我无法捕获完整的浏览器 这是我在env.rb文件中得到的代码: Capybara::Screenshot.register_driver(:chrome) do |driver, path| driver.browser.save_screenshot(path, full

我正在使用最新的Chrome浏览器版本57.0.2987.133(64位)和最新的chromedriver v2.29(尽管我也尝试过Chrome56和chromedriver 2.27),我遇到了一个问题,当测试失败时,我无法捕获完整的浏览器

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

Capybara::Screenshot.register_driver(:chrome) do |driver, path|
  driver.browser.save_screenshot(path, full: true)
end
然而,我得到的截图只是一部分,我可以在屏幕上看到,而不是整个浏览器

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


谢谢大家!

因为您使用的是chrome,所以我假设您使用的是selenium驱动程序(selenium webdriver)。selenium驱动程序不支持将任何选项传递到
save_screenshot
,也不支持将选项传递到
page.driver.screenshot
——这将引发过多的参数错误(在您的情况下,我假设capybara_screenshot gem捕捉并忽略了该错误),并且不会保存屏幕截图。如果您调用
driver.save\u屏幕截图(path,full:true)
则会进行截图,但传递的任何选项都将被忽略,因为它们不受支持。此外,由于WebDriver规范定义为拍摄视口(可见窗口),因此我不希望selenium很快支持全屏拍摄


如果您正在使用selenium进行屏幕截图,并且您想放大屏幕截图,那么您唯一的选择就是在截图之前增加窗口大小。

如果您将其更改为
driver.browser.save_屏幕截图(path,:full=>true)
?我已经做了更多的测试,只是注意到如果我输入“full:true”或“:full=>true”会怎么样在我的env.file中的register_驱动程序代码中,没有截图。如果我删除它,截图将被截取。然后,我用save_屏幕截图功能(即,不在register_驱动程序中)创建了一个不同的步骤,在这种情况下,我可以用这两个选项中的任何一个截图,但是,屏幕截图仍然是剪切的!!不知道是什么导致了这两个问题…@fabersky
full:true
:full=>true
是同一回事。第一种只是Ruby 1.9中添加的一种替代语法,用另一种语法替换一种语法是不会有任何区别的。@ThomasWalpole谢谢你的提示!谢谢你的解释,托马斯,我找不到可能发生的事情,以为我只是做错了什么。我会将其标记为“已修复”,然后标记为“不受支持”!谢谢