#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. Я думаю, что служба определения местоположения в режиме инкогнито отключена, поэтому код не будет работать, я не уверен, почему