2017-04-06 75 views
1

我使用的是最新的Chrome瀏覽器V5.7.0.2987.133(64位)和最新的chromedriver v2.29(儘管我已經嘗試過使用Chrome 56和chromedriver 2.27),但我遇到了問題當測試失敗時,我無法捕獲完整的瀏覽器。Cucumber-Capybara:save_screenshot(path,full:true)沒有捕獲完整的瀏覽器?

這是我在我的env.rb文件得到了代碼:

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

但是,我得到的截圖只是一個局部的部分,我可以在屏幕上看到,而不是完整的瀏覽器。

任何想法,如果我做錯了什麼或如果我可以嘗試不同的東西?

謝謝!

+0

如果將其更改爲'driver.browser.save_screenshot(path,:full => true)',該怎麼辦? – fabersky

+0

我一直在做更多的測試,只是注意到,如果我在env.file的register_driver代碼中放入「full:true」或「:full => true」,那麼就不會執行截圖。如果我刪除它,截圖雖然被剪切掉了。 然後,我用save_screenshot函數創建了一個不同的步驟(即,不在register_driver中),在這種情況下,我可以捕獲這兩個選項中的任何一個截圖,但截圖仍然被截斷! 不知道什麼可能導致這兩個問題... – mickael

+0

@fabersky'full:true'和':full => true'是一回事。第一種只是在Ruby 1.9中添加的一種替代語法,將其替換爲另一種語言永遠不會有什麼區別。 –

回答

1

由於您使用的是Chrome,我假設您使用的是硒驅動程序(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 gem捕獲並忽略)並且不保存屏幕截圖。相反,如果您撥打driver.save_screenshot(path, full: true),它將會拍攝一張照片,但任何通過的選項都將被忽略,因爲它們不受支持。此外,由於WebDriver規範被定義爲拍攝視口(可見窗口),所以我不希望硒很快就支持全屏。

如果您使用硒作爲您的屏幕截圖,並且想要更大,唯一的選擇是在進行屏幕截圖之前增加窗口大小。

+0

感謝所有的解釋托馬斯,我無法找到可能發生的事情,並認爲我只是做錯了什麼。 我會將它標記爲現在固定,然後不支持!謝謝! – mickael