¿Cómo puedo utilizar AutoIt para cerrar todas las alertas y confirmaciones de javascript que pueden aparecer?
-
19-09-2019 - |
Pregunta
Estoy probando en selenio y tengo un montón de cosas que suceden al cargar la página. Me enteré de autoit, y pensaba que podía manejar todos los temas de diálogo de JavaScript. Estaba buscando en la web para una secuencia de comandos autoit que pudiera manejar esto ...
Otras opciones serían útiles también!
No tienen por qué todo el código, pero un cierto punto en la dirección correcta sería de gran ayuda.
Solución
Está bien lo que esta solución funciona para mí ... yo era capaz de cerrar 2 ventanas aquí. También voy a ser capaz de manejar ventanas emergentes basándose en su nombre, que es genial. Siempre ejecuta en segundo plano después de haber inicializado el guión. Cuando yo quiero que termine me autoit simplemente cerca del administrador de tareas o desde el área de la barra de tareas a la derecha.
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
También esto es posible directamente desde pitón, detalles: http://www.parrisstudios.com /? p = 308 , pero todavía se necesita AutoIt3.
Otros consejos
Si usted está teniendo problemas con cajas de alerta es posible que desee desactivar mediante programación o crear un modo separado en el código que apagarlos en base a una condición (es decir, el modo de depuración).
programas de grabación de macros no funcionan tan bien como se podría pensar. Típicamente macro-grabación ubicaciones grabar programas de clics del ratón y el calendario de pulsaciones de teclas. Los mejores programas de macro-registro del uso (por lo general el procesamiento de imágenes) y (raramente) técnicas de visión por ordenador. Las soluciones que utilizan estas técnicas son típicamente muy caro. (5k-10k por asiento) [No puedo recordar uno de los nombres de las versiones mejores Puede ser QuickTest , pero fue hecho por una compañía que fue comprada por HP]
Yo estaba tratando de interactuar con una página web con autoit y las alertas de Javascript estúpidos se rompía todo y finalmente me di cuenta de cómo desactivarlas, así que pensé que iba a publicar aquí:
#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
Básicamente lo que esto hace es tener una función get llama en autoit cuando el estado listo page = 'interactivo' (al parecer esto es después de la mayor parte de la página se ha cargado pero antes de que "corre" nada creo) que inserta algunos javascript en la página de redefinir la función de alerta () de modo que no hace nada (sin diálogo de alerta que preocuparse de tener que hacer clic en OK). He probado esto y funciona.
Si usted tiene la función de alerta () se llama desde un marco dentro de la página, entonces usted tendrá que utilizar el evento onreadystatechange y la propiedad readystate del marco en lugar del documento principal.