Как закрыть всплывающее окно в Selenium, которое появляется после попытки закрыть браузер

У меня проблема с тестами на селен. У меня есть сценарий, который выполняет некоторые действия, а затем закрывает браузер. Когда я закрываю браузер, появляется всплывающее сообщение (снимок экрана прилагается), которое мне нужно принять, чтобы браузер закрылся. Моя проблема в том, что я пробовал много разных идей, но ни одна из них не сработала. от switch.accept до dismiss () до javascriptExecutor не повезло. Это метод, который я использую, чтобы закрыть браузер. после вызова этого метода я получаю всплывающее окно, которое мне нужно закрыть.

public static void closeDriver() throws InterruptedException{
     if (driver!=null){
        driver.quit();
        driver=null;
        log.info("The Browser was closed successfully");
    }

Я не вижу прикрепленных скриншотов. Не могли бы вы прикрепить его снова?

Rabia Asif 26.04.2018 08:26

Я не уверен, как прикрепить снимок экрана после публикации, но вот ссылка на точно такое же всплывающее окно, как у меня: google.com/…:

mbn217 26.04.2018 19:21
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
313
2

Ответы 2

Ваш сценарий немного сложен, так как после закрытия браузера вы хотите взаимодействовать с всплывающим окном.

Ну ваш код:

if (driver!=null){
        driver.quit();
        driver=null;
        log.info("The Browser was closed successfully");
    }  

ваш экземпляр драйвера будет закрыт после строки driver.quit();.

driver=null;
log.info("The Browser was closed successfully");  

вообще не должно выполняться.

Но если для тестирования вы открыли несколько экземпляров браузера, вы можете переключиться на driver.close();, а затем попытаться обработать предупреждение.

Да точно, проблема в том, что после закрытия браузера мне нужно взаимодействовать со всплывающим окном, и уже слишком поздно, потому что я вызвал метод driver.quit (). Даже если я не установил driver = null, он все равно не сработает, потому что я уже вызвал этот метод закрытия. Кроме того, driver.close () не работает. Спасибо за ответ, я ценю это.

mbn217 26.04.2018 19:12

У меня есть обходной путь, используя файл .vbs, чтобы убить процесс браузера вместо driver.close (), но я не хочу его использовать. Я хочу посмотреть, есть ли для него какое-либо решение

mbn217 26.04.2018 19:17

Это всплывающее окно нельзя обработать ни одной из команд селена, потому что его нельзя проверить. Для этого вам нужно будет использовать скрипт AutoIt. См. Ссылку ниже, которая предназначена для всплывающего окна проверки подлинности в браузере.

https://stackoverflow.com/a/47175309/7030563

Другие вопросы по теме