Pergunta

Eu estou tentando capturar telas em caso de falha de teste usando o selênio-cliente e rspec. Eu executar este comando:

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

Ele cria o relatório corretamente quando tudo passa, uma vez que não screenshots são obrigatórios. No entanto, quando o teste falhar, eu recebo essa mensagem, e o relatório tem screenshots em branco:

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

O que está causando esse 'execução expirou' erro? Estou faltando alguma coisa importante na minha especificação? Aqui está o código para 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
Foi útil?

Solução

A fim de obter as imagens no erro de trabalho eu tinha que as coisas mod um pouco.

Mudei o seguinte código fora do spec_helper (que eu encontrei em C: \ Rubi \ lib \ ruby ??\ gemas \ selênio-client-1.2.18 \ lib \ selênio \ rspec \ spec_helper.rb):

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

e colocou-o na append_after (: cada). Fazer parte do meu teste de configuração / teardown (antes da linha @ selenium_driver.close_current_browser_session)

Espero que isso ajude!

Outras dicas

Eu corri para essa questão e foi capaz de resolvê-lo através da criação do tempo limite para o motorista. Isto pode causar o driver para terminar a sessão do navegador antes de correr para: after_each Você está usando 10 segundos, eu estou correndo bem com: Tempo_Limite_em_Segundos => 2000

Por que não levar a imagem no após a função, mas antes de fechar o navegador?

Não sei se isso iria ajudar, https://github.com/mattheworiordan/capybara-screenshot, embora seja para Capivara e não selênio

parece que falta um " lá.

it "backed up" do
    page.open "/SQLDBDetails.aspx
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top