以下のRubyで簡単なWebdriverテストがあります:
require 'rubygems'
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :firefox
# example application under test
driver.get "https://dev08-olb.nz.thenational.com/ib4b/app/login"
element = driver.find_element :id => "accessId"
element.send_keys "123456"
element = driver.find_element :id => "userId"
element.send_keys "user1"
element = driver.find_element :id => "password"
element.send_keys "password1"
element.submit
if
"Hello".eql? driver.title
puts "Page title is #{driver.title}"
else
puts "damn it, it must be Monday"
end
driver.quit
今後はログインが必要なケースが多くなるので、できるだけ繰り返しを少なくしたいので、以下の2つのRubyスクリプトを作成します。
ログイン.rb
require 'rubygems'
require 'selenium-webdriver'
class LogIn
def initialize(accessID, user, pass)
@accessID = accessID
@user = user
@pass = pass
driver = Selenium::WebDriver.for :firefox
driver.get "https://dev08-olb.nz.thenational.com/ib4b/app/login"
element = driver.find_element :id => "accessId"
element.send_keys @accessID
element = driver.find_element :id => "userId"
element.send_keys @user
element = driver.find_element :id => "password"
element.send_keys @pass
element.submit
end
end
HelloWorld.rb
require 'rubygems'
require 'selenium-webdriver'
require './LogIn'
LogIn.new("123456","user1","password1")
driver = Selenium::WebDriver.for :firefox
if
"Hello".eql? driver.title
puts "Page title is #{driver.title}"
else
puts "damn it, it must be Monday"
end
driver.quit
ただし、HelloWorld.rb ではドライバーが 2 回インスタンス化されるため、テストの実行時にブラウザーの 2 つのインスタンスが開かれますが、これは望ましくありません。しかし、HelloWorld.rb でドライバーをインスタンス化しないと、後でそのプロパティにアクセスできません。
この種の状況を管理する方法は何ですか?
あなたの助けに感謝します。
前もって感謝します。