【问题标题】:Problems running parallel watir tests运行并行 watir 测试的问题
【发布时间】:2017-04-18 21:41:21
【问题描述】:

同时运行两个测试,如何通过关闭第一个测试的浏览器获得第二个测试?

很像我的问题所述:我正在使用基本 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

我已经阅读过的帖子:

【问题讨论】:

    标签: watir watir-webdriver


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-31
      • 1970-01-01
      • 1970-01-01
      • 2017-04-20
      • 2015-03-28
      • 2019-09-28
      • 2010-10-11
      • 2015-11-13
      相关资源
      最近更新 更多