我在寻找相同问题的解决方案时发现了这一点。
我想出的是使用 Sinatra 编写一个非常简单的 Ruby Web 服务,并让它将浏览器对象作为全局变量处理:
require 'rubygems'
require 'sinatra'
require 'watir-webdriver'
set :port, 9000
get '/openbrowser' do
$browser = Watir::Browser.new :ff
$timeout_length = 30
$browser.driver.manage.window.maximize
end
get '/closebrowser' do
$browser.close
end
然后让第二个脚本向 Web 服务发送 HTTP 请求,如下所示:
require 'net/http'
require 'uri'
url = "http://localhost:9000/openbrowser"
uri = URI.parse(url)
Net::HTTP.get(uri)
sleep(5)
url = "http://localhost:9000/closebrowser"
uri = URI.parse(url)
Net::HTTP.get(uri)
因此,您可以使用它打开浏览器,并根据需要将其与独立脚本一起使用,并在完成后将其关闭。
坏消息是:如果你已经有了一些东西,你可能需要进行大量的返工。
好消息是,如果您从头开始,您可以快速构建它。而且,如果您将浏览器对象存储在一个数组中,如果您喜欢这种事情,您可以并行测试多个浏览器。
希望这会有所帮助(尽管已经晚了 3 年)