Ruby 我可以为在watir webdriver中运行浏览器的类创建类似析构函数的函数吗?
我知道在大多数测试框架中,都有一个需要清理的函数。我已经从IRB运行了一些测试,所以我想构建一个自动清理功能(比如析构函数)。我尝试了一些finalize类型函数,但没有一个关闭不需要的浏览器。有人解决过这样的问题吗 IRB看起来像Ruby 我可以为在watir webdriver中运行浏览器的类创建类似析构函数的函数吗?,ruby,automated-tests,irb,watir-webdriver,Ruby,Automated Tests,Irb,Watir Webdriver,我知道在大多数测试框架中,都有一个需要清理的函数。我已经从IRB运行了一些测试,所以我想构建一个自动清理功能(比如析构函数)。我尝试了一些finalize类型函数,但没有一个关闭不需要的浏览器。有人解决过这样的问题吗 IRB看起来像 d = Session.new => #<Session:0x1016c5e60 @browser=#<Watir::Browser:0x1016c5dc0 url="http://ipchicken.com/" title="IP Chicken
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
或者也许我完全错了!?提前谢谢。为什么不使用黄瓜作为例子?我这样做是为了我的项目。 好处:
- 用于功能描述的漂亮DSL
- 有了rspec,像@browser.url.这样的好匹配程序应该匹配“google.com”
- 连续运行
- 特征隔离
|-- 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
我的档案:
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
如果你需要更多的描述,我会更新答案
更新:正如您在创建浏览器并在退出时关闭它之前所看到的。这也适用于windows,顺便说一句,非常感谢Stanislav。我有一个测试框架解决方案(我用RSpec来做),所以我可以用after:all来很好地结束。但是我也经常和IRB打交道,忘记在新的会话之前关闭浏览器(悬空过程)。如果可能的话,我宁愿在析构函数中杀死它。但是这些信息非常有用(因为我不太了解正确的项目结构)。
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