¿Cómo puedo utilizar AutoIt para cerrar todas las alertas y confirmaciones de javascript que pueden aparecer?

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

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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top