我有一个简单的watir(网络驱动程序)脚本进入谷歌。但是,我想使用选项解析器在cmd中设置一个参数来选择一个浏览器。以下是我的剧本:
require 'optparse'
require 'commandline/optionparser'
include CommandLine
require 'watir-webdriver'
describe 'Test google website' do
before :all do
options = {}
opts = OptionParser.new do |opts|
opts.on("--browser N",
"Browser to execute test scripts") do |n|
options[:browser] = n
$b = n.to_s
end
end
opts.parse! ARGV
p options
end
describe 'The test website should be displayed' do
it 'should go to google' do
$ie = Watir::Browser.new($b)
#go to test website
$ie.goto("www.google.com")
end
end
end
执行rspec ietest.rb - 浏览器firefox -f doc 只是给了我无效的选项,ietest是我的文件的名称。通过Web驱动程序设置浏览器的任何其他直观方式都是受欢迎的。
答案 0 :(得分:7)
您不能将rspec与OptionParser
一起使用,因为rspec可执行文件本身会解析自己的选项。你不能“捎带”你对rspec选项的选择。
如果您必须执行此类操作,请使用设置文件(spec_config.yml
或类似文件),或使用环境变量:
BROWSER=firefox spec test_something.rb
然后在您的代码中,您可以使用ENV['BROWSER']
来检索设置。
答案 1 :(得分:0)
请了解RSpec,因为我猜你对它没有任何线索(只是google)。没有期望,你正在编写你的功能。
require 'optparse'
require 'commandline/optionparser'
include CommandLine
require 'watir-webdriver'
options = {}
opts = OptionParser.new do |opts|
opts.on("--browser N",
"Browser to execute test scripts") do |n|
options[:browser] = n
end
opts.parse! ARGV
p options
ie = Watir::Browser.new(options[:browser].to_s)
#go to test website
ie.goto("www.google.com")
这应该有效。
编辑:如果您想测试它,请执行以下操作:
def open_url_with_browser(url, browser = 'firefox')
nav = Watir::Browser.new(browser)
nav.goto(url)
end
然后你会在规范中测试该方法。只需在不同的规范中存根new
和goto
。
如果您仍然想知道为什么会收到无效选项,是因为您要将--browser
传递给rspec
,而不是您的脚本。