Comment puis-je utiliser Autoit pour fermer toutes les alertes javascript et confirmations qui peuvent apparaître?

StackOverflow https://stackoverflow.com/questions/1709958

Question

Je teste en sélénium et j'ai un tas de choses qui se passe sur la charge de page. J'ai découvert AutoIt, et je pensais qu'il pourrait traiter toutes les questions de dialogue javascript. Je cherchais sur le web pour un script AutoIt qui pourrait gérer cela ...

D'autres options seraient utiles aussi bien!

Je ne dois pas nécessairement tout le code, mais un certain point dans la bonne direction serait utile.

Était-ce utile?

La solution

D'accord si cette solution fonctionne pour moi ... j'ai pu fermer 2 fenêtres ici. Aussi je serai en mesure de gérer les popups en fonction de leur nom qui est cool. Il fonctionne toujours en arrière-plan après avoir lauched le script. Quand je veux que ça je finis tout simplement près autoit de gestionnaire de tâches ou de la tâche bar à droite.

While True
If WinWait('Name of your Popup', '', 1) == 1 Then
    ;Wait for page to load if found
    Sleep(10000)
    ;Close Page
    Send('!{F4}') 
    Sleep(5000)
    ;Confirm Dialog
    Send('{ENTER}') 
    Sleep(1000)
    ;Close Lanucher Page
    Send('!{F4}') 
    Sleep(5000)
    ;Confirm Dialog
    Send('{ENTER}') 
EndIf
;Let another thread have a turn
sleep(3)
WEnd

Aussi est-ce possible directement à partir de python, les détails: http://www.parrisstudios.com /? p = 308 , mais vous avez encore besoin AutoIt3.

Autres conseils

Si vous rencontrez des problèmes avec des boîtes d'alerte vous pouvez les désactiver programme ou créer un mode séparé dans votre code qui les désactiver en fonction d'une condition (à savoir le mode de débogage).

Les programmes d'enregistrement de macro ne fonctionnent pas aussi bien que vous pourriez penser. Typiquement programmes macro-enregistrement emplacements d'enregistrement de clics de souris et le calendrier des touches. Les meilleurs programmes macro-enregistrement utilisent (généralement le traitement d'images) et (rarement) des techniques de vision par ordinateur. Les solutions qui utilisent ces techniques sont généralement très coûteux. (5k-10k par siège) [Je ne me souviens pas l'un des noms des meilleures versions Peut-être QuickTest , mais elle a été faite par une société qui a été racheté par HP]

Je suis en train d'interagir avec une page Web avec AutoIt et les alertes javascript stupides n'arrêtais pas tout casser et j'ai finalement compris comment les désactiver si je pensais que je posterais ici:

#include <ie.au3>

$oIE = _IEAttach('https://www.site.com','URL')

$EventObject=ObjEvent($oIE.document,"IEEvent_")
Func IEEvent_onreadystatechange()
    $readystate=$oIE.document.readystate
    ConsoleWrite ($readystate & @CRLF )
    if $readystate='interactive' then killalert()
EndFunc

while 1
    sleep(100)
WEnd

func killalert()
Local $o_head = $oIE.document.all.tags("HEAD").Item(0)
Local $o_script = $oIE.document.createElement("script")
With $o_script
    .language = "jscript"
    .type = "text/javascript"
    .text = 'function alert(message) {};'
EndWith
$o_head.appendChild($o_script)
EndFunc

En fait ce que cela fait est d'avoir une fonction s'appelle à AutoIt lorsque la page état prêt = (apparemment, c'est après la majeure partie de la page chargée, mais avant qu'il ne « fonctionne » tout ce que je pense) « interactif » qui insère javascript dans la page de redéfinir la fonction d'alerte () de sorte qu'il ne fait rien (pas de dialogue d'alerte à se soucier d'avoir à cliquer sur OK). Je l'ai testé et il fonctionne.

Si vous avez la fonction d'alerte () étant appelée à partir d'un cadre à l'intérieur de la page, alors vous devrez utiliser l'événement onreadystatechange et la propriété readystate du cadre au lieu du document principal.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top