1

Watir では、 next メソッドを使用して IE ウィンドウの WIN32OLE ハンドルを取得できます。

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

watir-webdriverによって作成されたIEと同じリターンを取得する必要があります。

何か方法はありますか?または、少なくとも誰かが掘る方向を教えてくれます。

HTTPwatch プラグインをブラウザ インスタンスにアタッチするには、このようなものが必要です。HTTPWatch コードの例を次に示します。

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

UPD: Justin Ko のおかげで、動作するコードがあります

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

1 に答える 1

1

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 型は、Watir の browser.ie() によって返される型と同じように見えます。

このソリューションでは、ブラウザに一意のタイトルがあることを前提としていることに注意してください。この仮定が有効でない場合は、いくつかの回避策を書くことができます。

于 2012-04-03T14:27:15.507 に答える