Селены скриншоты с использованием rspec - PullRequest
3 голосов
/ 30 ноября 2009

Я пытаюсь сделать снимки экрана при неудачном тестировании с использованием 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

Ответы [ 5 ]

1 голос
/ 27 января 2010

Я столкнулся с этой проблемой и смог решить ее, установив таймаут для водителя. Это может привести к тому, что драйвер завершит сеанс браузера перед запуском: after_each Вы используете 10 секунд, я в порядке с: timeout_in_seconds => 2000

0 голосов
/ 16 ноября 2011

Не уверен, поможет ли это, https://github.com/mattheworiordan/capybara-screenshot,, хотя это для Capybara, а не для Selenium

0 голосов
/ 19 августа 2011

похоже, там не хватает ".

it "backed up" do
    page.open "/SQLDBDetails.aspx
0 голосов
/ 27 апреля 2010

Чтобы получить скриншоты при работе с ошибками, мне пришлось немного изменить вещи.

Я удалил следующий код из 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).

Надеюсь, это поможет!

0 голосов
/ 03 декабря 2009

Почему бы не сделать снимок экрана в функции after, но перед закрытием браузера?

...