Как я могу использовать Autoit для закрытия всех предупреждений и подтверждений javascript, которые могут появиться?

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

Вопрос

Я тестирую в 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 фрейма вместо основного документа.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top