Могу ли я создать деструктороподобную функцию для класса, который запускает браузер в watir-webdriver? - PullRequest
0 голосов
/ 30 декабря 2011

Я знаю, что в большинстве тестовых сред есть функция для очистки.Я провел несколько тестов из IRB, поэтому я хотел бы создать функцию автоматической очистки (например, деструктор).Я попробовал некоторые функции типа финализировать, но ни одна из них не закрыла ненужный браузер.Кто-нибудь решил проблему, подобную этой?

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

Или, может быть, я все неправильно понимаю!?Заранее спасибо.

1 Ответ

1 голос
/ 31 декабря 2011

Почему бы не использовать огурец, например?Я делаю это для своего проекта.Преимущества:

  • Отличный DSL для описания функций
  • с rspec, хорошие совпадения, такие как @ browser.url.should соответствовать "google.com"
  • Непрерывная работа
  • выделение функций

Небольшое HowTo из моего проекта, я только что создал отдельный проект только с функциями огурца:

Тестирование структуры проекта:

|-- 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

...