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



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

browser = Watir::Browser.attach(:url, /url.com/)

使用Watir Webdriver,我尝试了其他地方发布的窗口切换技巧,但这似乎只有在你点击原始浏览器窗口中的链接时才有效。它似乎找不到在脚本运行之前已经打开的窗口。

其他博客上的用户社区告诉我,这只能通过IE和使用watir实现,而不能使用watir网络驱动程序。在webdriver的selenium问题跟踪器上打开了一个问题,但它已经打开了很长一段时间。

我希望有一个变通办法。有什么想法吗?

Webdriver不支持附加到现有进程,因此watir Webdriver 也不支持

我在为同一问题寻找解决方案时发现了这一点。

我想到的是使用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年)

相关内容

最新更新