ruby - 无法使用 OptionParser 和 rspec

标签 ruby rspec watir watir-webdriver optionparser

我有一个简单的 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 --browser firefox -f doc 只是给我无效的选项,ietest 是我的文件的名称。欢迎任何其他通过 Web 驱动程序设置浏览器而不更改脚本代码的直观方法。

最佳答案

您不能将 rspec 与 OptionParser 一起使用,因为 rspec 可执行文件本身会解析自己的选项。您不能在 rspec 选项上“搭载”您的选项。

如果您必须这样做,请使用设置文件(spec_config.yml 或类似文件),或使用环境变量:

BROWSER=firefox spec test_something.rb

然后在您的代码中,您可以使用 ENV['BROWSER'] 来检索设置。

关于ruby - 无法使用 OptionParser 和 rspec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7077026/

相关文章:

javascript - 如何在我的 RSpec/Capybara/Selenium 测试中要求 Javascript 文件进行测试?

ruby - Cheezy的Page对象,获取Page内定义的所有text_fields

ruby - 规范;当属性没有值时验证元素状态

ruby - 扩展类和实例

ruby-on-rails - 如何在 Rails 4.2 和 sqlite 中按星期几进行过滤?

ruby - Ruby 的 EOB 构造的用例

ruby - 使用 Watir 获取表格的整个列文本

ruby-on-rails - 将符号数组传递给 Rails 的 `except()!` 方法

ruby-on-rails - RSpec Controller 测试嵌套资源上的 PUT 更新操作

ruby-on-rails - 在 Presenter 规范中使用 ActionView::TestCase::Behavior 和 View 方法