如何通过watir-webdriver获取IE的WIN32OLE句柄?

在Watir中,您可以使用下一个方法获取IE窗口的WIN32OLE句柄。

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

我需要以某种方式获得由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) 

您可以尝试使用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()返回的类型相同。

请注意,此解决方案假定浏览器具有唯一标题。 如果这个假设无效,我可以写一些解决方法。

Interesting Posts