2013-08-28 2 views
4

Я пытаюсь написать сценарий, который будет искать и использовать окно браузера (это может быть IE или Firefox), который уже открыт до запуска скрипта. Метод attach работает для IE, но он не может работать с Firefox.Поиск в открывшемся окне браузера (firefox) с Watir

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

Использование Watir-WebDriver Я попытался переключающий окно трюк отправил в другом месте, но это только кажется, работает, когда вы нажали на ссылку из исходного окна браузера. Кажется, он не может найти окно, которое было открыто перед запуском скрипта.

Сообщество пользователей в блогах в других местах говорит мне, что это возможно только с IE и с использованием watir и не watir-webdriver. Есть an issue opened at the selenium вопрос трекера для webdriver, но он был открыт довольно долгое время.

Я надеюсь, что есть обходной путь. Есть идеи?

+3

Я не считаю, что этим решение для WebDriver еще. –

ответ

2

WebDriver не поддерживает присоединение к существующим процессам, следовательно, и не может Watir-WebDriver

0

Я нашел это при поиске решения одной и той же задачи.

Что-то я придумал было написать очень простой Ruby, WebService с помощью Синатру, и пусть что обрабатывать объект браузера в качестве глобальной переменной:

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-запросы вебсервис так:

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-х года поздни)