Как получить дескриптор WIN32OLE для IE через watir-webdriver? - PullRequest
1 голос
/ 02 апреля 2012

В Watir вы можете получить дескриптор WIN32OLE окна IE, используя следующий метод.

irb(main):059:0> browser.ie
=> #<WIN32OLE:0x28d12b8>

Мне нужно как-то получить тот же возврат для IE, который был создан watir-webdriver.

Есть какой-нибудь способ? Или, по крайней мере, кто-то может указать мне направление копать.

Мне нужен этот материал, чтобы прикрепить плагин HTTPwatch к моему экземпляру браузера. Вот пример кода HTTPWatch.

require 'watir'
require 'win32ole'
browser = Watir::Browser.new
controller = WIN32OLE.new('HttpWatch.Controller')
plugin = controller.IE.Attach(browser.ie)

UPD: Благодаря Джастину Ко у меня есть рабочий код

require 'win32ole'
require 'watir-webdriver'

browser = Watir::Browser.new :ie
title = browser.title
browser.goto "google.com"

length = WIN32OLE.new('Shell.Application').Windows.count - 1

(0..length).each do |i|
begin
       WIN32OLE.new('Shell.Application').Windows(i).Document.Title
       $ie = WIN32OLE.new('Shell.Application').Windows(i)
    rescue
    end
end

controller = WIN32OLE.new('HttpWatch.Controller')
plugin = controller.IE.Attach($ie)

1 Ответ

1 голос
/ 03 апреля 2012

Вы можете попробовать использовать WIN32OLE для подключения к работающему экземпляру IE.Это обсуждалось в блоге Ruby On Windows - см. здесь .

Я думаю, что вам понадобится код:

require 'win32ole'
require 'watir-webdriver'

browser = Watir::Browser.new :ie
title = browser.title

for window in WIN32OLE.new('Shell.Application').Windows
    begin
        if window.Document.Title == title
            ie = window
        end
    rescue
    end
end

controller = WIN32OLE.new('HttpWatch.Controller')
plugin = controller.IE.Attach(ie)

У меня нет HttpWatch, поэтомуЯ не смог проверить это.Однако тип win32ole, по-видимому, совпадает с типом, возвращаемым browser.ie () Watir.

Обратите внимание, что в этом решении предполагается, что браузер имеет уникальный заголовок.Если это предположение неверно, я могу написать несколько обходных путей.

...