Невозможно использовать OptionParser и rspec
У меня есть простой скрипт watir (веб-драйвер), который идет в Google. Но я хочу использовать опцию парсера, чтобы установить аргумент в 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 --browser firefox -f doc просто дает мне недопустимую опцию, т.е.test - это имя моего файла. Любые другие интуитивно понятные способы настройки браузера через веб-драйвер без изменения кода скрипта приветствуются.
2 ответа
Вы не можете использовать rspec с OptionParser
поскольку сам исполняемый файл rspec анализирует свои параметры. Вы не можете "прокрутить" ваши опции в опциях rspec.
Если вам нужно сделать что-то подобное, используйте файл настроек (spec_config.yml
или аналогичный), или используйте переменную окружения:
BROWSER=firefox spec test_something.rb
И тогда в вашем коде вы можете использовать ENV['BROWSER']
чтобы получить настройки.
Пожалуйста, узнайте о 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
, а не ваш сценарий, как предполагалось.