【发布时间】: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
我已经阅读过的帖子:
- Is it possible to run Watir test in parallel?
- Watir webdriver; window.close is closing entire browser?
- Suppress auto-closing window in Watir
- https://markoh.co.uk/droplets
- https://watirmelon.blog/tag/automated-testing/
- http://watirautomation.blogspot.com/
- https://github.com/grosser/parallel_tests#setup-for-non-rails
- https://github.com/watir/watir-rspec
【问题讨论】:
标签: watir watir-webdriver