1

Google にアクセスする単純な watir (web-driver) スクリプトがあります。しかし、オプション パーサーを使用して 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 を実行すると、無効なオプションが表示されます.ietestはファイルの名前です。スクリプト コードを変更せずに、Web ドライバーを介してブラウザーを設定するその他の直感的な方法を歓迎します。

4

2 に答える 2

8

OptionParserrspec実行可能ファイル自体が独自のオプションを解析するため、rspecをで使用することはできません。rspecオプションでオプションを「ピギーバック」することはできません。

このようなことを行う必要がある場合は、設定ファイル(spec_config.ymlまたは同様のもの)を使用するか、環境変数を使用してください。

BROWSER=firefox spec test_something.rb

次に、コードENV['BROWSER']で設定を取得するために使用できます。

于 2011-08-16T12:04:40.197 に答える
1

RSpec については何も知らないと思いますので、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

次に、仕様でそのメソッドをテストします。stub だけnewで、goto仕様が異なります。

なぜ無効なオプションを取得しているのか疑問に思っている場合は、意図したとおりにスクリプトではなく に渡し--browserているためです。rspec

于 2011-08-16T11:42:51.377 に答える