我知道在大多数测试框架中,都有一个清理功能。我一直在从IRB运行一些测试,所以我想构建一个自动清理功能(如析构函数)。我尝试了一些finalize类型函数,但没有一个关闭不需要的浏览器。有没有人解决过像这样的问题?
IRB看起来像
d = Session.new
=> #<Session:0x1016c5e60 @browser=#<Watir::Browser:0x1016c5dc0 url="http://ipchicken.com/" title="IP Chicken - Whats my IP address? ip address lookup"
d.do_something_test
your test passed!
=> nil
d = nil
=> nil
使用类似
的示例类require 'watir-webdriver'
class Session
attr_accessor :browser
def initialize
@browser = Watir::Browser.new
@browser.goto 'http://ipchicken.com'
end
def do_something_test
puts "your test passed!" if @browser.html.match /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/
end
end
或许我接近这一切都错了!?提前谢谢。
答案 0 :(得分:1)
为什么不以黄瓜为例?我正在为我的项目做这件事。 优点:
我的项目中的一个小方法,我刚刚创建了一个单独的黄瓜功能项目:
测试项目结构:
|-- config.yml
|-- features
| |-- login.feature
| |-- signup.feature
| |-- profile.feature
| |-- ...
| |-- step_definitions
| | |-- auth_steps.rb
| | `-- click_steps.rb
| |-- support
| | |-- dom.rb
| | |-- env.rb
| | `-- path.rb
|-- Gemfile
`-- Gemfile.lock
我的Gemfile:
source "http://rubygems.org"
gem "firewatir"
gem "watir-webdriver"
gem "awesome_print"
gem "cucumber"
gem "cucumber-rails"
gem "rspec"
gem "rspec-core"
gem "rspec-expectations"
gem "rspec-mocks"
env.rb
require 'rspec/expectations'
require 'time'
Before do
@config = YAML.load_file(File.join(File.dirname(__FILE__), '../../config.yml'))["test"]
@@browser ||= case @config["browser"]
when "firefox"
require 'firewatir'
FireWatir::Firefox.new
when "IE"
require 'watir'
Watir::Browser.new
when "Opera"
require 'operawatir'
OperaWatir::Browser.new
when "Safari"
require 'safariwatir'
Watir::Safari.new
when "Chrome"
require 'watir-webdriver'
Watir::Browser.new(:chrome)
end
end
at_exit do
@@browser.close
end
如果您需要更多说明,我会更新答案。
更新:正如您所见,在创建浏览器之前,at_exit将其关闭。这也适用于Windows以及BTW