运行并行watir测试的问题

时间:2017-04-18 21:41:22

标签: watir watir-webdriver

一次运行两个测试,如何从关闭第一个测试的浏览器中获得第二个测试?

非常像我的问题所说:我使用基本的watir一次运行两个测试(例如:test1.rb,test2.rb)。

运行rake,watir-grid,selenium-grid,parallel_test, rspec。无论哪个测试完成首先调用browser.close,导致剩余测试失败。失败测试返回的消息为browser window was closed. /var/lib/gems/2.3.0/gems/watir-6.1.0/lib/watir/browser.rb:312:in 'assert_exists'

我做错了什么?我尝试为浏览器分配提供不同的变量名称,例如browser1,browser2等。我甚至尝试在Jenkins下安装rake以使用两个不同的工作区。以下是我的测试示例(为了保护公司身份而删除了实际代码)。

test1.rb

#!/usr/bin/ruby
require 'watir'
require 'headless'

def runTests
    # tests go here
end

begin
    puts "Running headless."
    headless = Headless.new
    headless.start

    puts "Running browser."
    browser = Watir::Browser.new(:chrome)
    browser.window.resize_to(1200, 1000)
    browser.driver.manage.timeouts.implicit_wait = 5

    runTests()
rescue => e
    puts ("#{e}. "+ e.backtrace.join("\n"))
ensure
    browser.close
    headless.destroy
end

test2.rb

#!/usr/bin/ruby
require 'watir'
require 'headless'
require 'CoreClass'

def runSecondFileTests()
    # second set of tests go here
    # might use @coreClass if needed
end

begin
    puts "Running headless."
    headless = Headless.new
    headless.start

    puts "Running browser."
    client = Selenium::WebDriver::Remote::Http::Default.new
    client.read_timeout = 600

    browser = Watir::Browser.new(:chrome, :http_client => client)
    browser.window.resize_to(1200, 1000)

    @coreClass       = CoreClass.new(browser)

    runSecondFileTests()
rescue => e
    puts ("#{e} "+e.backtrace.join("\n"))
ensure
    browser.close
    headless.destroy
end

我已经读过的帖子:

1 个答案:

答案 0 :(得分:0)

问题实际上是无头设置。第一个headless.destroy将强制关闭默认显示中的所有打开的浏览器。您需要指定display or reuse parameters