selenium WebDriver-如何在测试之间保持登录
我有单独的测试,而不是正常运行selenium WebDriver-如何在测试之间保持登录,selenium,rspec,webdriver,Selenium,Rspec,Webdriver,我有单独的测试,而不是正常运行 rspec test_name_spec.rb 每个都包含@driver=Selenium::WebDriver 我需要运行它们并保持登录状态,在测试之间使用相同的窗口 我设置了一个套件,但是当我在(:all)之前使用下面的代码将@driver=分配移动到时,我得到一个错误,因为@driver为空: describe "district" do before(:all) do @driver = Selenium::WebDriver.for :fi
rspec test_name_spec.rb
每个都包含@driver=Selenium::WebDriver
我需要运行它们并保持登录状态,在测试之间使用相同的窗口
我设置了一个套件,但是当我在(:all)之前使用下面的代码将@driver=
分配移动到时,我得到一个错误,因为@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
集合的内容\u QA\u区\u名称:
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
require_relative.../../../spec_helper”
包括RSpec::期望值
请描述“SetQaDistrictionName”的用法
在…之前做
@driver=Selenium::WebDriver.for:firefox
@基本url=”http://dmstaffing-stage.herokuapp.com/"
@接受下一个警报=真
@driver.manage.timeouts.implicit_wait=30
@验证_错误=[]
结束
在(:每个)之后做
#@司机,退出
@验证\u错误。应==[]
结束
它是“测试集、地区名称”吗
质量保证运行编号=“056”
结束
def元素_是否存在?(如何、什么)
@驱动程序。查找元素(如何、什么)
真的
rescue Selenium::WebDriver::错误::NoSuchElementError
假的
结束
def验证(&blk)
产量
救援预期NotMetError=>ex
@验证错误因此对于初学者,您可以这样做:-
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
需要“selenium webdriver”
需要“rspec”
包括RSpec::期望值
描述“地区”吗
在…之前做
@driver=Selenium::WebDriver.for:firefox
@基本url=”http://dmstaffing-stage.herokuapp.com/"
@接受下一个警报=真
@driver.manage.timeouts.implicit_wait=30
@验证_错误=[]
@驱动程序。获取“http://dmstaffing-stage.herokuapp.com/"
结束
它是“测试集、地区名称”吗
质量保证运行编号=“056”
结束
它“测试设置文件上传源位置”吗
##有些事。。。你的测试
结束
它“以管理员身份登录”进行测试
##有些事。。。你的测试
结束
在…之后做
@司机,退出
@验证\u错误。应==[]
结束
def元素_是否存在?(如何、什么)
@驱动程序。查找元素(如何、什么)
真的
rescue Selenium::WebDriver::错误::NoSuchElementError
假的
结束
def验证(&blk)
产量
救援预期NotMetError=>ex
@验证错误您还可以共享*\u spec.rb
文件中的内容。例如单位/set\u QA\u district\u name\u spec.rb“
乐意。添加到上面。