2012-04-02 1 views
1

Dans Watir vous pouvez obtenir le handle WIN32OLE de la fenêtre IE en utilisant la méthode suivante.Comment obtenir WIN32OLE gérer pour IE via watir-webdriver?

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

J'ai besoin d'obtenir le même retour pour IE qui a été créé par watir-webdriver.

Y a-t-il un moyen? Ou au moins quelqu'un peut me pointer la direction à creuser.

J'ai besoin de ce truc pour attacher le plugin HTTPwatch à mon instance de navigateur. Voici un exemple de code HTTPWatch.

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

UPD: Merci à Justin Ko J'ai le code de travail

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) 

Répondre

1

Vous pouvez essayer d'utiliser le WIN32OLE pour attacher à l'instance en cours d'exécution de IE. Cela a été discuté sur le blog Ruby On Windows - voir here.

Je pense que le code que vous auriez besoin est:

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) 

Je n'ai pas HttpWatch, donc je n'a pas pu le tester. Cependant, le type win32ole semble être du même type que celui retourné par browser.ie() de Watir.

Notez que cette solution suppose que le navigateur a un titre unique. Si cette hypothèse n'est pas valide, je peux écrire quelques solutions de contournement.

+0

Salut, merci beaucoup pour votre aide. Votre code n'a pas fonctionné mais une version légèrement modifiée fonctionne très bien. Ici, il est 'require 'win32ole' require 'watir-WebDriver' navigateur = Watir :: Browser.new: title = -à-dire browser.title browser.goto "google.com" longueur = WIN32OLE.new ('Shell.Application'). Windows.count - 1 (0..longueur) .que faire | i | \t commencent met WIN32OLE.new ('Shell.Application'). (Windows i) .Document.Title met $ ie = WIN32OLE.new ('Shell.Application'). (Windows i) sauvetage fin fin controller = WIN32OLE.new ('HttpWatch.Controller') plugin = controller.IE.Attache ($ ie) ' –

Questions connexes