2013-08-28 140 views
4

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

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

使用的Watir-webdriver的我试过其他地方贴在了车窗开关把戏,但似乎只当你点击从原来的浏览器窗口中的链接工作。似乎无法找到在脚本运行之前已打开的窗口。

在其他地方的博客上的用户社区告诉我,这是唯一可能的IE和使用watir而不是watir-webdriver。 webdriver有an issue opened at the selenium问题跟踪器,但它已开放很长一段时间。

我希望有一个解决方法。有任何想法吗?

+3

我不相信有一个webdriver的解决方案呢。 –

回答

2

webdriver的不支持附加到现有的工艺,因此也不能的Watir-的webdriver

0

我发现这个寻找用于相同问题的解决方案时。

东西,我想出了是写使用西纳特拉一个非常简单的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 

然后有第二个脚本发送HTTP请求像这样的Web服务:

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

相关问题