2010-06-17 14 views
1

Je suis en train d'essayer de cliquer sur un lien après que celui-ci est actif produit un popup (téléchargement de fichier) après avoir cliqué. Ici, j'ai 2 problèmesLe navigateur IE ne se ferme pas et la fenêtre de téléchargement de fichiers doit être mise au point

1) Je commence le code et le laisser .que le code est fait -après long processus attend -il le lien pour être le lien actif .Une fois est actif il clique sur le lien et un téléchargement pop-ups ouvre (si tout va bien) et puis il se bloque là (montrant clignotant jaune dans la tâche barre qui signifie que je dois cliquer sur l'explorateur pour le traiter quel que soit le prochain) .tout le temps j'ai pour cliquer sur l'IE chaque fois que le pop-up de téléchargement apparaît. Y at-il un moyen de gérer cela ou suis-je faire un mauvais?

2) Le problème suivant est même si je clique sur l'IE. L'IE ne se ferme pas même si j'écris ie.close. mon code est ci-dessous:

     ## if the link is active 
        ie.link(:text,a).click_no_wait 
        prompt_message = "Do you want to open or save this file?" 
        window_title = "File Download" 
        save_dialog =WIN32OLE.new("AutoItX3.Control") 
         save_dialog.WinGetText(window_title) 

         save_dialog_obtained =save_dialog.WinWaitActive(window_title) 
         save_dialog.WinKill(window_title) 
         # end 
         #' 
         #some more code -normal puts statements 
         # 

        ie.close 

-à-dire est suspendu pour une raison étrange ..?

+0

J'aimerais savoir ce que signifient ces balises :-) – Pointy

+1

AutoIt est un langage de script en mettant l'accent sur la manipulation interface utilisateur Windows. Un excellent outil à connaître. – Copas

Répondre

0

Pour # 2. Vous voudriez 'attacher' votre code à la fenêtre parent et ensuite essayer de le fermer. Il semble que lorsque la boîte de dialogue de téléchargement s'ouvre, la fenêtre parente perd le focus. Vous pouvez essayer -

ie = Watir :: IE.attach (: url,) (OR) ie = Watir :: IE.attach (: titre,)

et puis essayer de fermer le navigateur.

+0

attache est je crois être déprimé btw. Watir 3 utilise la même interface de commutation de fenêtre que les utilisateurs de watir-webdriver.Cependant, je pense que le popup dans ce cas n'est pas une fenêtre de navigateur, et doit être manipulé au niveau du système d'exploitation en utilisant quelque chose comme AutoIt ou RAutomation –

0

Je ne suis pas sûr de votre problème de popup, mais j'ai du code pour faire face à ce que j'ai trouvé être un problème de popup très frustrant de mon côté. Donc, je l'inclus pour l'exhaustivité. Ici, votre objet navigateur IE est équivalent à mon exemple @browser objet

require 'watir\winClicker' 
require 'watir\contrib\enabled_popup' 

def popup_clicker(text) 
    begin 
     Timeout::timeout 2 , PopupTimeout do 
     if @browser.enabled_popup 
      hwnd = @browser.enabled_popup(5) 
      w = WinClicker.new 
      w.makeWindowActive(hwnd) 
      w.clickWindowsButton_hwnd(hwnd,text) 
     end 
     end 
    rescue PopupTimeout 
     # Do this line if you can't find a popup 
    end 
    @browser.wait 
    end 

ensuite cliquer sur le bouton OK il suffit d'exécuter

popup_clicker('OK') 

Une chose que vous remarquerez peut-être est que vous devez cliquer manuellement le bouton déclenche le popup avec un clic matériel. AutoIT peut gérer cela, ou j'ai un clicker d'élément Watir manuel si vous le voulez. Essayez-le sans d'abord. J'ai aussi du code pour vérifier le contenu des popups si vous le voulez (en gros, lancez 'popup_text = w.getStaticText_hWnd (hwnd) .to_s' dedans). Comme pour 2) assurez-vous que l'objet 'ie' est encore configuré pour le navigateur. Essayez de rattacher, comme Namrantha l'a noté. Je n'ai pas connu ie.close pour échouer. Cela devrait fonctionner, remplacer @browser comme bon vous semble, et XXX étant le titre de la fenêtre ou un équivalent regex:

@browser = Watir::IE.attach(:title, XXXX) 
@browser.close 

Crédit pour l'original clicker pop-up doit aller le plus loin en arrière dans la chaîne que je peux trouver, un bel utilisateur sur le groupe Google Watir général Wesley appelé Chen:

http://groups.google.com/group/watir-general/browse_thread/thread/41c45aae9f87da9b