使用ruby + watir-webdriver + cucumber和parallel_tests gem在多个浏览器中运行测试

目前,我使用cucumber.yml中的并行配置文件加载环境特定文件,使用hooks.rb设置浏览器。 我使用’parallel_cucumber features’运行我的测试。 我的hooks.rb文件中没有太多内容:

Before do @browser = Watir::Browser.new :firefox end After do @browser.close end 

该配置文件如下所示:

 parallel: FIG_NEWTON_FILE=local.yml --no-source --color --format pretty 

有没有办法更改我的hooks.rb文件,以便所有function都针对一组浏览器(firefox,chrome,safari)运行? 是否可以通过命令行传递文件名或环境?

您绝对可以通过命令行传递环境名称。 看看我的env.rb文件:

 case ENV['BROWSER'] when 'ff', 'Firefox' browser = Selenium::WebDriver.for :firefox browser_name = 'Firefox' when 'chrome' browser = Selenium::WebDriver.for :chrome browser_name = 'Chrome' when 'debug' debug_profile = Selenium::WebDriver::Firefox::Profile.new debug_profile.add_extension "firebug-1.9.1-fx.xpi" browser = Selenium::WebDriver.for :firefox, :profile => debug_profile browser_name = 'Firefox (Firebug)' when 'mobile' mobile_profile = Selenium::WebDriver::Firefox::Profile.new mobile_profile['general.useragent.override'] = "Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A535b Safari/419.3" browser = Selenium::WebDriver.for :firefox, :profile => mobile_profile browser_name = 'Mobile' when 'headless' headless_profile = Headless.new headless_profile.start browser = Selenium::WebDriver.for :firefox browser_name = 'Firefox' else browser = Selenium::WebDriver.for :firefox browser_name = 'Firefox' end if URLS[ENV['URL']].nil? environment = 'dev' url = 'http://' + URLS['dev'] domain = URLS['dev'] else environment = ENV['URL'].upcase url = 'http://' + URLS[ENV['URL']] domain = URLS[ENV['URL']] end if ENV['CLIENT'].nil? client = 'user/password' else client = ENV['CLIENT'] end puts "Browser " + browser_name puts "URL " + url puts "Environment: " + environment puts "Client: " + client puts "Domain: " + domain test_env = { :browser => browser, :browser_name => browser_name, :url => url, :env => environment, :client => client, :login => nil, :domain => domain } 

现在,当我运行黄瓜时,我通过以下方式调用环境:

黄瓜浏览器= ff