28

PhantomJS には、(現在のビューポートだけでなく) ページ全体のスクリーンショットを撮るオプションがあります。Selenium を使用してこれを行う方法はありますか? ヘッドレス gem を使用して、ヘッドレスで Cucumber/Capybara テストを実行しています。私は PhantomJS を使用しますが、他にも問題がありました。

4

4 に答える 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 に答える