用空格字符分隔一些selenium脚本来运行它们ruby rake

时间:2013-04-04 05:55:28

标签: ruby selenium webdriver rake

我正在使用Ruby Rake在Ruby Terminal窗口上运行Selenium Webdriver脚本。所以,我在rakefile.rb中有代码如下:

task :default do
    if ENV['scripts']
       scripts = ENV['scripts'].split(',')
end

代码“scripts = ENV ['scripts']。split(',')”表示如果我想运行许多脚本ex:'test1.rb'& 'test2.rb',所以我必须在我想要运行的两个脚本的名称之间使用逗号(,),如下所示:

C:\>rake scripts=test1.rb,test2.rb

但现在我想更改代码,以便我可以使用空格字符b / w脚本而不是(,)

C:\>rake scripts=test1.rb test2.rb

我该怎么办,请帮忙,非常感谢。

1 个答案:

答案 0 :(得分:2)

Rake会将第二个脚本视为对任务的调用,因此您需要将参数括在引号中来对其进行分组:

$ rake scripts='test1.rb test2.rb'

然后,您可以在Rake任务中不带参数调用split

task :default do
  if ENV['scripts']
    scripts = ENV['scripts'].split
    p scripts
  end
end

这将产生:

$ rake scripts='test1.rb test2.rb'
["test1.rb", "test2.rb"]

另一个选择是自己调整命令行参数,然后使用命令行参数的名称动态定义任务,因此rake不会抱怨缺少任务。我已将其解压缩为一个名为with_args的方法:

# expose command line arguments
def with_args &block
  args = ARGV.dup
  args.shift
  block.call(args)
  args.each{|arg| task(arg.to_sym) }
end

你可以像这样使用它:

task :default => [:scripts]

task :scripts do
  with_args do |files|
    p files
  end
end

然后以这种方式调用rake任务:

$ rake scripts test1.rb test2.rb
["test1.rb", "test2.rb"]

最初的想法来自this blog post