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 秒,我运行良好:timeout_in_seconds => 2000

于 2010-01-27T12:21:43.467 回答
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 回答
0

看起来好像少了一个"

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

不确定这是否有帮助,https://github.com/mattheworiordan/capybara-screenshot,虽然它是针对 Capybara 而不是 Selenium

于 2011-11-16T14:32:12.163 回答