一次运行两个测试,如何从关闭第一个测试的浏览器中获得第二个测试?
非常像我的问题所说:我使用基本的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以使用两个不同的工作区。以下是我的测试示例(为了保护公司身份而删除了实际代码)。
#!/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
#!/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
我已经读过的帖子:
答案 0 :(得分:0)
问题实际上是无头设置。第一个headless.destroy
将强制关闭默认显示中的所有打开的浏览器。您需要指定display or reuse parameters。