Отклонить «… хочет узнать ваше местоположение» диалоговое окно

#java #selenium #dialog #geolocation #dismiss

#java #селен #диалоговое окно #геолокация #отклонить

Вопрос:

Я использую Selenium Chromedriver для автоматизации тестирования веб-сайта. Одна из функций использует службы определения местоположения. Я включил службу определения местоположения для браузера Chrome, который я использую.

Но когда я запускаю тест, отображается диалоговое окно, изображенное ниже. введите описание изображения здесь

Следующий код находит предупреждение, но alert.dismiss(), похоже, не работает (т. Е. Диалоговое окно все еще присутствует)

 try {
            Alert alert = driver.switchTo().alert();
            alert.dismiss();
        } catch (NoAlertPresentException ex) {
            // System.out.println("No alert for this test case.");
        }   

 
 

Как тестовый код может нажать кнопку Разрешить и закрыть диалоговое окно? Моя цель — нажать Разрешить.

—Сэм—

Ответ №1:

 Map<String, Object> prefs = new HashMap<String, Object>();
Map<String, Object> profile = new HashMap<String, Object>();
prefs.put("googlegeolocationaccess.enabled", true);
prefs.put("profile.default_content_setting_values.geolocation", 2); // 1:allow 2:block
prefs.put("profile.default_content_setting_values.notifications", 1);
prefs.put("profile.managed_default_content_settings", 1);
options.setExperimentalOption("prefs", prefs);
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
webDriver = new ChromeDriver(capabilities);
 

вы также можете попробовать установить prefs.put(«googlegeolocationaccess.enabled», false);

Это приведет к блокировке или принятию всех запросов доступа к геолокации по умолчанию в соответствии с флагом, который вы установили перед запуском драйвера

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

1. Спасибо за ответ. Тот же диалог появляется даже после того, как я добавил prefs.put(«googlegeolocationaccess.enabled», false);

2. @sp вы должны установить для него значение true и установить prefs.put(«профиль. default_content_setting_values.geolocation как 2, используйте код как есть

3. Спасибо, @PDHide. Теперь код работает как шарм — диалоговое окно на изображении выше не отображается ни в том, ни в другом случае.

4. Только что обнаружил, что если экземпляр браузера создается в режиме инкогнито, отображается диалоговое окно разрешить / запретить «Знать свое местоположение». Должен ли код работать только в режиме без инкогнито?

5. Я думаю, что служба определения местоположения в режиме инкогнито отключена, поэтому код не будет работать, я не уверен, почему