3

Selenium-client と rspec を使用して、テストの失敗時にスクリーンショットをキャプチャしようとしています。次のコマンドを実行します。

$ spec my_spec.rb \
--require 'rubygems,selenium/rspec/reporting/selenium_test_report_formatter' \
--format=Selenium::RSpec::SeleniumTestReportFormatter:./report.html 

スクリーンショットが必要ないため、すべてが合格するとレポートが正しく作成されます。ただし、テストが失敗すると、次のメッセージが表示され、レポートには空白のスクリーンショットが含まれます。

WARNING: Could not capture HTML snapshot: execution expired
WARNING: Could not capture page screenshot: execution expired
WARNING: Could not capture system screenshot: execution expired
Problem while capturing system stateexecution expired

この「実行期限切れ」エラーの原因は何ですか? 私の仕様に何か重要なものがありませんか? my_spec.rb のコードは次のとおりです。

require 'rubygems'
gem "rspec", "=1.2.8"
gem "selenium-client"
require "selenium/client"
require "selenium/rspec/spec_helper"

describe "Databases" do
    attr_reader :selenium_driver
    alias :page :selenium_driver

  before(:all) do
      @selenium_driver = Selenium::Client::Driver.new \
          :host => "192.168.0.10",
          :port => 4444,
          :browser => "*firefox",
          :url => "http://192.168.0.11/",
          :timeout_in_seconds => 10
  end

  before(:each) do
    @selenium_driver.start_new_browser_session
  end

  # The system capture need to happen BEFORE closing the Selenium session
  append_after(:each) do
    @selenium_driver.close_current_browser_session
  end

  it "backed up" do
    page.open "/SQLDBDetails.aspx"
    page.click "btnBackup", :wait_for => :page
    page.text?("Pending Backup").should be_true
  end
end
4

5 に答える 5

1

私はその問題に遭遇し、ドライバーのタイムアウトを設定することで解決できました。これにより、:after_each が実行される前にドライバーがブラウザー セッションを終了する可能性があります。10 秒を使用しています。

于 2010-01-27T12:21:43.467 に答える
0

そこが欠けているよう"です。

it "backed up" do
    page.open "/SQLDBDetails.aspx
于 2011-08-19T03:30:40.307 に答える
0

これが役立つかどうかはわかりませんが、https://github.com/mattheworiordan/capybara-screenshotですが、Selenium ではなく Capybara 用です。

于 2011-11-16T14:32:12.163 に答える
0

after 関数でスクリーンショットを撮ってはいけませんが、ブラウザを閉じる前に?

于 2009-12-02T21:47:20.700 に答える
0

エラーのスクリーンショットを取得するために、少し変更する必要がありました。

次のコードを spec_helper から移動しました (C:\Ruby\lib\ruby\gems\selenium-client-1.2.18\lib\selenium\rspec\spec_helper.rb にあります):

    if actual_failure?
         Selenium::RSpec::SeleniumTestReportFormatter.capture_system_state(selenium_driver, self)
    end

そして、それを私のテストのセットアップ/ティアダウンのappend_after(:each) doセクション(@selenium_driver.close_current_browser_sessionの行の前)に配置しました。

お役に立てれば!

于 2010-04-27T01:45:00.987 に答える