Ruby 使用Watir查找当前打开的浏览器(firefox)窗口

Ruby 使用Watir查找当前打开的浏览器(firefox)窗口,ruby,window,selenium-webdriver,watir,watir-webdriver,Ruby,Window,Selenium Webdriver,Watir,Watir Webdriver,我正在尝试编写一个脚本,它将查找并使用在脚本执行之前已经打开的浏览器窗口(可以是IE或Firefox)。attach方法适用于IE,但不能用于Firefox browser = Watir::Browser.attach(:url, /url.com/) 使用Watir Webdriver,我尝试了其他地方发布的窗口切换技巧,但这似乎只在您单击原始浏览器窗口中的链接时起作用。似乎找不到在脚本运行之前已打开的窗口 其他地方博客上的用户社区告诉我,只有使用IE和watir,而不是watir web

我正在尝试编写一个脚本,它将查找并使用在脚本执行之前已经打开的浏览器窗口(可以是IE或Firefox)。attach方法适用于IE,但不能用于Firefox

browser = Watir::Browser.attach(:url, /url.com/)
使用Watir Webdriver,我尝试了其他地方发布的窗口切换技巧,但这似乎只在您单击原始浏览器窗口中的链接时起作用。似乎找不到在脚本运行之前已打开的窗口

其他地方博客上的用户社区告诉我,只有使用IE和watir,而不是watir webdriver,这才可能实现。webdriver有一个问题追踪器,但它已经开放了很长一段时间


我希望有个解决办法。有什么想法吗?

Webdriver不支持附加到现有流程,因此watir Webdriver也不支持。我在寻找相同问题的解决方案时发现了这一点

我想到的是使用Sinatra编写一个非常简单的Ruby Web服务,并将browser对象作为全局变量处理:

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年)

我认为还没有webdriver的解决方案。