Как обрабатывать всплывающие окна в IE, используя Ruby
2 ответа
Исходя из вашего последнего вопроса, я предполагаю, что вы используете Watir-Classic (хотя вы также указали Watir-Webdriver).
Как уже упоминалось в комментариях @orde, у Ватира есть Alert
класс для обработки этих типов диалогов. К сожалению, с точки зрения нажатия кнопок, Watir-Classic имеет только #ok
Метод определен:
# Press the "OK" button on the JavaScript dialog.
def ok
dialog.button(:value => "OK").click
wait_until_not_exists
end
Это не будет работать для этого диалогового окна, так как вместо кнопки "ОК" есть кнопки "Да" и "Нет". Вам нужно будет продублировать эту функцию с правильным значением.
Обратите внимание, что dialog
является окном RAutomation и больше не относится к конкретному коду Watir. В результате значения кнопок не всегда интуитивно понятны - это не всегда просто текст, который вы видите. Чтобы получить правильные значения, вы должны спросить у диалога, какие значения он видит:
browser.alert.send(:dialog).buttons.map(&:value)
#=> ["&Yes", "&No"]
Затем мы можем сделать те же звонки, что и #ok
метод, но с правильным значением:
alert = browser.alert
alert.send(:dialog).button(:value => '&Yes').click
alert.wait_while_present
Этот код работает нормально для обработки этого типа всплывающих окон:
save_dialog = WIN32OLE.new("AutoItX3.Control") save_dialog.ControlClick("Windows Internet Explorer", "Yes", "[CLASS:Button;INSTANCE:1]")