Страницы

Поиск по вопросам

понедельник, 16 декабря 2019 г.

Как с помощью selenium(java) найти push уведомление браузера и кликнуть по нему?

#java #selenium


Как с помощью selenium(java) дождаться push уведомление браузера и когда оно появится
кликнуть по нему ? Использую драйвер chrome и selenium 3. 
вот пример сообщения 



    


Ответы

Ответ 1



Если я не ошибаюсь, то каждая нотификация может работать по-другому. Решение 1. В консоли браузера добавляем JS код, который будет печатать нам URL нотификации. Мы собираем эти данные и сами решаем какой именно URL нам нужно. // это JS if ('Notification' in window) { messaging.onMessage(function(event) { console.log('url is: ', event.notification.click_action); }); } // Это Java String js = "if ('Notification' in window) {\n" + " messaging.onMessage(function(event) {\n" + " console.log('url is: ', event.notification.click_action);\n" + " });\n" + "}"; ((JavascriptExecutor) driver).executeScript(js); Далее собираем логи с консоли, после появления нотификации и обрабатываем. Логи можно получить следующим образом: getDriver().manage().logs().get(LogType.BROWSER).getAll(); Напоминаю, что каждый вызов возвращает только НОВЫЕ логи. Также нужно включить поддержку логов при старте браузера LoggingPreferences logging = new LoggingPreferences(); logging.enable(LogType.BROWSER, Level.ALL); capabilities.setCapability(CapabilityType.LOGGING_PREFS, logging); Решение 2. В консоли браузера добавляем JS код, который будет автоматически переходить по ссылке нотификации. Минус подхода в том, что если будет много нотификации за раз, то перейдет только по одному URL-у. if ('Notification' in window) { messaging.onMessage(function(event) { console.log('url is: ', event.notification.click_action); window.location.href = event.notification.click_action; }); } Полезные ссылки: раз, два протестировать можно тут открыть сайт. Открыть DevTools. в консоль(вкладка Console) выполнить первый или второй JS скрипт. нажать кнопку SEND первый скрипт напечатает в консоле "url is: www...", второй скрипт дополнительно перейдет по этому URL

Комментариев нет:

Отправить комментарий