Webdriver in Ruby, how to make coke reusable by making classes -


i have simple webdriver test in ruby below:

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 #{driver.title}" else   puts "damn it, must monday" end  driver.quit 

in future there lots of other cases require log in want repeat less possible create following 2 ruby scripts.

login.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 #{driver.title}" else   puts "damn it, must monday" end  driver.quit 

however in helloworld.rb driver gets instantiated twice 2 instance of browser gets open @ test execution, not desired. if don't instantiate driver in helloworld.rb, can't access property later.

what's way of managing these kind of situation?

your appreciated.

thanks in advance.

this more how program tests in ruby, rather selenium specific. there many ways of doing it.

here one, try initialize driver helloworld.rb, pass login.rb

helloworld.rb

require 'rubygems' require 'selenium-webdriver' require './login'  driver = selenium::webdriver.for :firefox  login.new(driver, "123456","user1","password1")   if   "hello".eql? driver.title   puts "page title #{driver.title}" else   puts "damn it, must monday" end  driver.quit 

login.rb

require 'rubygems' require 'selenium-webdriver'  class login     def initialize(driver, accessid, user, pass)     @driver = driver     @accessid    = accessid     @user   = user     @pass = pass      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 

Comments

Popular posts from this blog

java.util.scanner - How to read and add only numbers to array from a text file -

rewrite - Trouble with Wordpress multiple custom querystrings -

debian - 500 Error upon login into Plesk Admin - auth.php3? -