#Capybaraでスクリーンショットを撮る
page.save_screenshot "ss.png"
ただし、上の書き方だと画面の一部分しか撮ってくれません...
Capybaraでフルサイズのスクリーンショットを撮る
フルサイズのスクリーンショットの撮り方を調べるとfull: true
オプションを発見したので付けてスクリーンショットを撮ってみます。
page.save_screenshot "ss.png", full: true
しかし、headless-chromeだとフルサイズに撮れませんでした...
他の方法がないか調べると以下のサイトを発見。
https://testingrepository.com/full-page-screenshot-with-selenium/
take_full_page_screenshot
メソッドを適当な場所に定義して、page.save_screenshot
をtake_full_page_screenshot
に置き換えてみます。
spec_helper.rb
def take_full_page_screenshot(path)
width = Capybara.page.execute_script("return Math.max(document.body.scrollWidth, document.body.offsetWidth, document.documentElement.clientWidth, document.documentElement.scrollWidth, document.documentElement.offsetWidth);")
height = Capybara.page.execute_script("return Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);")
window = Capybara.current_session.driver.browser.manage.window
window.resize_to(width+100, height+100)
page.save_screenshot path
end
今度はフルサイズで撮ることができました!