Geb: Как взаимодействовать с диалоговым окном BasicAuth браузера во время загрузки страницы

У меня есть приложение, размещенное на tomcat, которое защищено и проксируется аутентификацией Apache Digest. Я получаю диалоговое окно входа в систему в стиле basicAuth, когда я получаю доступ к чему-либо на сервере.

когда я пытаюсь войти в систему, используя приведенный ниже код, он никогда не доходит до части "driver.switchTo().alert()".... он вечно зацикливается в операторе via... и выдает исключение. Я предполагаю, что операторы "to" и "через" GEB ждут завершения загрузки страницы. теперь geb ожидает загрузки страницы, а страница ожидает ввода учетных данных geb. мертвый замок. не могли бы вы предоставить какие-либо предложения о том, как решить эту проблему? обратите внимание, что я уже пробовал http://:@mydomain.com/index.jsp, но он продолжает предлагать мне угрожающее диалоговое окно входа в систему.

via AppLoginPage //using a page object here 
Alert alert= driver.switchTo().alert();
// Type the username
alert.sendKeys(user);        
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_TAB);

Проще говоря, как сделать geb полным без ожидания полной загрузки страницы, чтобы мой код робота мог обработать предупреждение? надеюсь, это было ясно.


person Uday g    schedule 24.11.2014    source источник


Ответы (3)


Мы используем стиль аутентификации baseUrl = 'http://admin:[email protected]' для нашего внутреннего приложения.

На одном этапе мы использовали прокси, а также пробовали робота, но иногда это вызывало проблемы с существующими библиотеками, используемыми Webdriver, и это было менее проблематично.

Если вы используете IE:@ не будет работать. Однако вы можете включить эту функцию с помощью групповой политики и reg-edit. Имейте в виду, что это проблема безопасности.

Если это не ваш предпочтительный способ, я могу откопать старый код для вас.

Я использовал аналогичный ответ на этот вопрос < /а>

person twinj    schedule 02.12.2014

Я не думаю, что можно обрабатывать базовые диалоги аутентификации с помощью WebDriver и, следовательно, Geb. Вы можете попытаться указать учетные данные в базовом URL-адресе, например. baseUrl = 'http://admin:[email protected]'. Если это не сработает, вам нужно будет настроить какой-либо прокси-сервер для аутентификации и настроить драйвер, который вы используете для его использования.

person erdi    schedule 26.11.2014

Я не мог использовать решение user:password, потому что мое имя содержит @ (или есть способ его избежать?). В любом случае, я экспериментировал с LittleProxy, потому что он написан на Java, и я надеялся, что смогу легко его запустить. перед самим тестом, а затем «вставить» заголовок авторизации в мой запрос, отправленный на проверенный URL-адрес.

Итак: 1. Запустите прокси, 2. Настройте драйвер так, чтобы он правильно использовал прокси, 3. Запустите тест

Это привело к грубому коду, который можно найти в его полноте в моем ответе на аналогичный вопрос Как обрабатывать аутентификацию сервера с помощью Geb/WebDriver

Код основан на вызове Browse.drive и устанавливает драйвер Firefox. Я надеюсь, что IE тоже можно использовать таким образом.

На самом деле я не знал, куда поместить ответ, но я не хочу его дублировать - и в конце концов он находится на StackOverflow.

person virgo47    schedule 12.04.2015