2

我将脚本保存在以下路径中:

C:\Desktop\RSpec_Folder

我的代码是:

require 'rspec'
require 'watir-webdriver'
require 'rautomation'
browser = Watir::Browser.new

RSpec.configure do |config|
  config.before(:each) { @browser = browser }
  config.after(:suite) { browser.close unless browser.nil? }
end  

describe "Outbid Home Scenarios validation" do  
  before(:each) do
    @browser.goto('http://www.outbid.com')
  end

  it "To validate outbid Logo/Home page navigation" do
    @browser.link(:id, "home-link").click
  end 

  it "Host & Join Live Auctions heading is available" do 
    @browser.text.include?('Host & Join Live Auctions')
  end

  it "Host & Join Live Auctions " do 
    @browser.text.include?('Host mail')
  end  

  after(:each) do
    @browser.close
  end  
end

我的 R 规范文件名是 outbid.Rb. 从命令提示符运行上述脚本时:

rspec --format html --out results.html outbid.rb

它只生成 HTML 报告。

我想为所有通过和失败的步骤创建带有屏幕截图的报告。

4

2 回答 2

3

您可以使用watir-rspecand its Watir::RSpec::HtmlFormatter,它会自动保存所有失败规范的屏幕截图(以及示例期间生成的其他文件)。

只需按照README进行配置即可。

于 2013-05-19T17:06:23.897 回答
0

这可能不是您希望的答案,但它是现实的

用黄瓜做这个很容易。关于这个主题有多个博客文章,只需要几行代码。

问题是 Rspec 是围绕运行 UNIT 测试而设计的,几乎不需要截取或嵌入屏幕截图。这种事情在验收测试中更为常见,Cucumber 的设计目的远远超过 Rspec。

因此,您的选择是扩展您的框架(我将从您在问题的评论中引用的 Jarmo 的帖子开始)或者如果这看起来超出您的想象并且您不想花时间学习所需的编码为此,请考虑您选择的框架,并查看类似 Cucumber 之类的东西,它专为验收测试而设计,并使得在 HTML 测试结果报告中嵌入屏幕截图相对容易。

对于黄瓜 在 env.rb 添加这样的代码(注意:此代码仅在失败时截取屏幕截图,如果您一直想要它们,则删除包裹在内部 4 行代码周围的 if 逻辑)

After do |scenario|
  if scenario.failed?
    screenshot = "./FAILED_#{scenario.name.gsub(' ','_').gsub(/[^0-9A-Za-z_]/, '')}.png"
    @browser.driver.save_screenshot(screenshot)
    encoded_img = @browser.driver.screenshot_as(:base64)
    embed("data:image/png;base64,#{encoded_img}",'image/png')
  end
end

如果 rspec 有一个类似的 embed 命令,那么您可能会在 after(:each) 中放置非常类似的代码。我查看了 rdocs 并没有找到像 Embed 这样的东西,所以我不知道股票 Rspec 框架是否可以处理这个问题。(这可能是 rspec 小组的更多问题)

于 2013-05-16T21:58:04.247 回答