2013-05-03 54 views
2

我有比硒的webdriver - 如何远离测试登录测试

rspec test_name_spec.rb 

运行确定单项测试每一个包含@driver = Selenium::WebDriver

我需要运行它们,并保持登录状态,使用从测试到测试的相同窗口。

我设置了一套房,但是当我使用下面的代码移动@driver=分配到before(:all),我得到一个错误,因为@driver为空:

describe "district" do 
    before(:all) do 
    @driver = Selenium::WebDriver.for :firefox 
    end 

    require File.join(File.dirname(__FILE__), "units/set_QA_district_name_spec.rb") 
    require File.join(File.dirname(__FILE__), "units/set_file_uploads_source_location_spec.rb") 
    require File.join(File.dirname(__FILE__), "units/login_as_admin_spec.rb") 
end 

错误:

1) SetQADistrictName test_set_q_a_district_name 
    Failure/Error: @driver.manage.timeouts.implicit_wait = 30 
    NoMethodError: 
    undefined method `manage' for nil:NilClass 

内容set_QA_district_name:

require_relative "../../../spec_helper" 
include RSpec::Expectations 

describe "SetQADistrictName" do 

    before(:each) do 
    @driver = Selenium::WebDriver.for :firefox 
    @base_url = "http://dmstaffing-stage.herokuapp.com/" 
    @accept_next_alert = true 
    @driver.manage.timeouts.implicit_wait = 30 
    @verification_errors = [] 
    end 

    after(:each) do 
    #@driver.quit 
    @verification_errors.should == [] 
    end 

    it "test_set_q_a_district_name" do 
    QA_run_number = "056" 
    end 

    def element_present?(how, what) 
    @driver.find_element(how, what) 
    true 
    rescue Selenium::WebDriver::Error::NoSuchElementError 
    false 
    end 

    def verify(&blk) 
    yield 
    rescue ExpectationNotMetError => ex 
    @verification_errors << ex 
    end 

    def close_alert_and_get_its_text(how, what) 
    alert = @driver.switch_to().alert() 
    if (@accept_next_alert) then 
     alert.accept() 
    else 
     alert.dismiss() 
    end 
    alert.text 
    ensure 
    @accept_next_alert = true 
    end 
end 
+0

可你也分享你所拥有的'* _spec.rb' file.Say内例如'单位/ set_QA_district_name_spec.rb“' – Amey 2013-05-03 16:08:54

+0

快乐。上面添加。 – 2013-05-03 16:51:22

回答

0

所以对于初学者,你可以做到这一点,像这样: -

require "selenium-webdriver" 
require "rspec" 
include RSpec::Expectations 

describe "District" do 

    before(:all) do 
    @driver = Selenium::WebDriver.for :firefox 
    @base_url = "http://dmstaffing-stage.herokuapp.com/" 
    @accept_next_alert = true 
    @driver.manage.timeouts.implicit_wait = 30 
    @verification_errors = [] 
    @driver.get "http://dmstaffing-stage.herokuapp.com/" 
    end 

    it "test_set_q_a_district_name" do 
    QA_run_number = "056" 
    end 

    it "test_set_file_uploads_source_location" do 
    ##something... Your tests 
    end 

    it "test_login_as_admin" do 
    ##something... Your tests 
    end 

    after(:all) do 
    @driver.quit 
    @verification_errors.should == [] 
    end 

    def element_present?(how, what) 
    @driver.find_element(how, what) 
    true 
    rescue Selenium::WebDriver::Error::NoSuchElementError 
    false 
    end 

    def verify(&blk) 
    yield 
    rescue ExpectationNotMetError => ex 
    @verification_errors << ex 
    end 

    def close_alert_and_get_its_text(how, what) 
    alert = @driver.switch_to().alert() 
    if (@accept_next_alert) then 
     alert.accept() 
    else 
     alert.dismiss() 
    end 
    alert.text 
    ensure 
    @accept_next_alert = true 
    end 
end