Ruby 如何通过watir webdriver获取IE的Win32 OLE句柄?
在Watir中,您可以使用next方法获取IE窗口的Win32 OLE句柄Ruby 如何通过watir webdriver获取IE的Win32 OLE句柄?,ruby,watir,watir-webdriver,httpwatch,Ruby,Watir,Watir Webdriver,Httpwatch,在Watir中,您可以使用next方法获取IE窗口的Win32 OLE句柄 irb(main):059:0> browser.ie => #<WIN32OLE:0x28d12b8> UPD:感谢Justin Ko,我有了工作代码 require 'win32ole' require 'watir-webdriver' browser = Watir::Browser.new :ie title = browser.title browser.goto "google.
irb(main):059:0> browser.ie
=> #<WIN32OLE:0x28d12b8>
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()返回的类型相同
请注意,此解决方案假定浏览器具有唯一的标题。如果此假设无效,我可以编写一些解决方法。您可以尝试使用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()返回的类型相同
请注意,此解决方案假定浏览器具有唯一的标题。如果这个假设无效,我可以写一些变通方法。您好,非常感谢您的帮助。您的代码还没有运行,但是稍微修改一下版本就可以了。这里是
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)。每个do | i | begin放入win32ole.new('Shell.Application')。Windows(i)。Document.title放入$ie=win32ole.new('Shell.Application').Windows(i)rescue end controller=WIN32OLE.new('HttpWatch.controller')plugin=controller.IE.Attach($IE)
Hi,非常感谢您的帮助。您的代码还没有正常工作,但是稍微更改一下版本就可以了。这里是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)。每个do | i | begin放入WIN32OLE.new('Shell.Application')。Windows(i).Document.Title放入$ie=WIN32OLE.new('Shell.Application')。Windows(i)rescue end-end-end-controller=WIN32OLE.new('HttpWatch.controller')plugin=controller.ie.Attach($ie)