2011-08-16 98 views
1

我有一個簡單的watir(網絡驅動程序)腳本到谷歌。但是,我想使用選項解析器在cmd中設置參數來選擇瀏覽器。下面是我的腳本:無法使用OptionParser和rspec

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火狐-f DOC 只是給了我無效選項,ietest是我的文件的名稱。歡迎任何其他直觀的通過網絡驅動程序設置瀏覽器的方式,並且無需更改腳本代碼。

回答

7

由於rspec可執行文件本身解析自己的選項,因此不能使用rspec和OptionParser。你不能在rspec選項上「捎帶」你的選項。

如果你必須做這樣的事情,然後使用一個設置文件(spec_config.yml或類似),或使用環境變量:

BROWSER=firefox spec test_something.rb

然後在你的代碼,你可以使用ENV['BROWSER']檢索設置。

+0

感謝您的信息! – Sun

0

請了解RSpec,因爲我猜測你對此沒有任何線索(只是谷歌它)。沒有任何期望,你正在寫你的功能。

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 

然後,你將測試在一個規範這種方法。只需存根newgoto不同的規格。

如果您仍然想知道爲什麼您獲取無效選項是因爲您按預期通過--browserrspec,而不是您的腳本。

+0

我知道代碼以前工作,但我希望它與rspec一起工作,我知道我寫的rspec代碼是壞的,但它是一個簡單的測試,看看我可以如何使用rspec和OptionParser。感謝您的幫助。 – Sun

+0

我編輯了答案,現在可能會有所幫助。 – Serabe

+0

再次感謝您的幫助,看起來我會使用類似於此的東西。 – Sun