Como posso usar o Autoit para fechar todos os alertas e confirmações do JavaScript que podem aparecer?

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

Pergunta

Estou testando no selênio e tenho várias coisas que acontecem na carga da página. Eu descobri o Autoit e estava pensando que ele poderia lidar com todos os problemas de diálogo JavaScript. Eu estava pesquisando na web um script automático que poderia lidar com isso ...

Outras opções também seriam úteis!

Não preciso necessariamente de todo o código, mas algum ponto na direção certa seria útil.

Foi útil?

Solução

Tudo bem, então essa solução funciona para mim ... pude fechar duas janelas aqui. Além disso, poderei lidar com pop -ups com base no nome deles, o que é legal. Ele sempre funciona em segundo plano depois que eu leu o script. Quando quero que termine, simplesmente fecho o Autoit do gerenciador de tarefas ou da área da barra de tarefas à direita.

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

Além disso, isso é possível de diretamente em Python, detalhes: http://www.parrisstudios.com/?p=308, mas você ainda precisa de autoit3.

Outras dicas

Se você estiver com problemas com caixas de alerta, poderá desativá -las programaticamente ou criar um modo separado no seu código que as desativaria com base em uma condição (ou seja, modo de depuração).

Os programas de gravação de macro não funcionam tão bem quanto você imagina. Normalmente, programas de gravação de macro registram locais de cliques de mouse e tempo das pressões das teclas. Os melhores programas de gravação de macro usam (normalmente processamento de imagens) e (raramente) técnicas de visão computacional. As soluções que usam essas técnicas são tipicamente muito caras. (5k-10k por assento) [Não me lembro de um dos nomes das melhores versões Pode ser rápido, mas foi feito por uma empresa que foi comprada pela HP

Eu estava tentando interagir com uma página da web com o Autoit e os estúpidos alertas de javascript continuaram quebrando tudo e finalmente descobri como desativá -los, então pensei em postar aqui:

#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

Basicamente, o que isso faz é ter uma função é chamada no autoit quando a página está pronta status = 'interativa' (aparentemente isso é depois que a maior parte da página foi carregada, mas antes de "executar" qualquer coisa que eu pense) que insere algum javascript na página para Redefina a função alert () para que não faça nada (não há diálogo alerta para se preocupar em ter que clicar em OK ON). Eu testei isso e funciona.

Se você tiver a função alert () que está sendo chamada de um quadro dentro da página, precisará usar o evento OnreadyStatechange e a propriedade ReadyState do quadro, em vez do documento principal.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top