Как я могу использовать Autoit, чтобы закрыть все предупреждения и подтверждения JavaScript, которые могут появиться? - PullRequest
1 голос
/ 10 ноября 2009

Я тестирую селен, и у меня есть куча вещей, которые происходят при загрузке страницы. Я узнал об autoit и подумал, что он может решить все проблемы с диалоговым окном JavaScript. Я искал в Интернете какой-нибудь скрипт autoit, который мог бы справиться с этим ...

Также были бы полезны другие варианты!

Мне не обязательно нужен весь код, но некоторая точка в правильном направлении будет полезна.

Ответы [ 3 ]

3 голосов
/ 10 ноября 2009

Хорошо, так что это решение работает для меня ... Я смог закрыть 2 окна здесь. Также я буду иметь возможность обрабатывать всплывающие окна на основе их имени, что круто. После запуска сценария он всегда работает в фоновом режиме. Когда я хочу, чтобы это закончилось, я просто закрываю autoit из диспетчера задач или из области панели задач справа.

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

Также это возможно непосредственно из Python, подробности: http://www.parrisstudios.com/?p=308,, но вам все еще нужен autoit3.

0 голосов
/ 23 сентября 2013

Я пытался взаимодействовать с веб-страницей с помощью autoit, и глупые предупреждения javascript продолжали ломать все, и я наконец понял, как их отключить, поэтому я подумал, что выложу это здесь:

#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

По сути, это означает, что функция вызывается в autoit, когда состояние готовности страницы = «интерактивный» (очевидно, это происходит после того, как большая часть страницы загружена, но до того, как она «запускает» все, что я думаю), которая вставляет некоторый JavaScript в страница для переопределения функции alert (), чтобы она ничего не делала (нет диалогового окна с предупреждением о необходимости нажатия кнопки «ОК»). Я проверил это, и это работает.

Если у вас есть функция alert (), вызываемая из фрейма внутри страницы, вам придется использовать событие onreadystatechange и свойство readystate фрейма вместо основного документа.

0 голосов
/ 10 ноября 2009

Если у вас есть проблемы с окнами оповещений, вы можете отключить их программным способом или создать в своем коде отдельный режим, который будет отключать их в зависимости от условия (т. Е. Режим отладки).

Программы записи макросов работают не так хорошо, как вы думаете. Обычно программы макросъемки записывают места щелчков мышью и время нажатия клавиш. Лучшие программы для макросъемки используют (как правило, обработку изображений) и (редко) методы компьютерного зрения. Решения, в которых используются эти методы, обычно ОЧЕНЬ ДОРОГО. (5k-10k за место) [Я не могу вспомнить одно из названий лучших версий Может быть QuickTest , но оно было сделано компанией, которая была куплена HP]

...