PhantomJS には、(現在のビューポートだけでなく) ページ全体のスクリーンショットを撮るオプションがあります。Selenium を使用してこれを行う方法はありますか? ヘッドレス gem を使用して、ヘッドレスで Cucumber/Capybara テストを実行しています。私は PhantomJS を使用しますが、他にも問題がありました。
質問する
20714 次
4 に答える
51
ポルターガイストでこれを行う方法を探してこの海岸に打ち上げられた人がいる場合は、full
引数を渡すだけで済みます。
page.save_screenshot('screen.png', full: true) # If providing a custom file name.
page.save_screenshot(full: true) # Capybara sets a name based on timestamp.
page.save_and_open_screenshot('screen.png', full: true) # Same as save_screenshot.
page.save_and_open_screenshot(full: true) # Same as save_screenshot.
それが役に立てば幸い!
于 2016-03-15T14:39:45.100 に答える
8
take_screenshot
ヘッドレス gem によって提供されたメソッドを使用していたことが判明しましたが、メソッドを使用することもできましたがpage.save_screenshot()
、これはまさに必要なことを行います。ありがとう、アンドレイ。
于 2013-05-23T07:52:03.723 に答える
1
次のようなこともできます。
After do |scenario|
take_screenshot(@browser, scenario)
end
def take_screenshot(browser, scenario)
if scenario.failed?
scenario_name = scenario.name.gsub /[^\w\-]/, ' '
time = Time.now.strftime("%Y-%m-%d %H%M")
screenshot_path = './failed_png/' + time + ' - ' + scenario_name + '.png'
else
scenario_name = scenario.name.gsub /[^\w\-]/, ' '
time = Time.now.strftime("%Y-%m-%d %H%M")
screenshot_path = './success_png/' + time + ' - ' + scenario_name + '.png'
end
browser.save_screenshot(screenshot_path)
end
failed_png および success_png フォルダーを作成すると、このコードは成功と失敗ごとにスクリーンショットを取得し、タイムスタンプと共にそれぞれのフォルダーに配置します。このコードは env.rb ファイルに入り、ヘルパーを使用したり、ステップ定義に余分なコードを追加したりする必要がないようにします。
于 2013-05-24T17:49:27.453 に答える