Как я могу использовать Autoit для закрытия всех предупреждений и подтверждений javascript, которые могут появиться?
-
19-09-2019 - |
Вопрос
Я тестирую в selenium, и у меня есть куча вещей, которые происходят при загрузке страницы.Я узнал об autoit и подумал, что он мог бы справиться со всеми проблемами диалогового окна javascript.Я искал в Интернете какой-нибудь скрипт autoit, который мог бы справиться с этим...
Другие варианты также были бы полезны!
Мне не обязательно нужен весь код, но какой-то момент в правильном направлении был бы полезен.
Решение
Хорошо, значит, это решение работает для меня...Мне удалось закрыть здесь 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.
Другие советы
Если у вас возникли проблемы с полями предупреждений, вы можете отключить их программно или создать отдельный режим в своем коде, который отключал бы их на основе условия (т.е.режим отладки).
Программы записи макросов работают не так хорошо, как вы могли бы подумать.Обычно программы макрозаписи записывают местоположения щелчков мыши и время нажатия клавиш.Лучшие программы макросъемки используют (обычно обработку изображений) и (редко) методы компьютерного зрения.Решения, использующие эти методы, как правило, ОЧЕНЬ ДОРОГИ.(5-10 тысяч за место) [Я не могу вспомнить ни одного названия лучших версий Может быть, самый быстрый, но это было сделано компанией , которая была выкуплена HP]
Я пытался взаимодействовать с веб-страницей с помощью 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, когда статус готовности страницы = 'interactive' (по-видимому, это происходит после загрузки большей части страницы, но до того, как она "запустит" все, что я думаю), которая вставляет некоторый javascript на страницу, чтобы переопределить функцию alert (), чтобы она ничего не делала (нет диалогового окна оповещения, в котором нужно беспокоиться о необходимости нажимать ok).Я протестировал это, и это работает.
Если у вас есть функция alert (), вызываемая из фрейма внутри страницы, то вам придется использовать событие onreadystatechange и свойство readystate фрейма вместо основного документа.