Вопрос-ответ

How to handle authentication popup with Selenium WebDriver using Java

Как обработать всплывающее окно аутентификации с помощью Selenium WebDriver с помощью Java

Я пытаюсь обработать всплывающее окно аутентификации, используя приведенный ниже код:

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("network.http.phishy-userpass-length", 255);
profile.setPreference("network.automatic-ntlm-auth.trusted-uris", "x.x.x.x");
driver = new FirefoxDriver(profile);
baseUrl="http://" + login + ":" + password + "@" + url;
driver.get(baseUrl + "/");

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

Переведено автоматически
Ответ 1

Метод оповещения, authenticateUsing() позволяет пропустить поле Базовая аутентификация по Http.

WebDriverWait wait = new WebDriverWait(driver, 10);      
Alert alert = wait.until(ExpectedConditions.alertIsPresent());
alert.authenticateUsing(new UserAndPassword(username, password));

По состоянию на Selenium 3.4 он все еще находится в бета-версии


Прямо сейчас реализация выполняется только для InternetExplorerDriver


Ответ 2

Не используйте профиль firefox и попробуйте приведенный ниже код:

driver.get("http://UserName:Password@Example.com");

Если вы реализуете это в браузере IE, есть определенные вещи, которые вам нужно сделать.

В случае, если вашему серверу аутентификации требуется имя пользователя с доменом типа "domainuser", вам необходимо добавить двойную косую черту / к URL-адресу:

//localdomain\user:password@example.com
Ответ 3

Попробуйте следующее решение и дайте мне знать в случае возникновения каких-либо проблем:

driver.get('https://example.com/')
driver.switchTo().alert().sendKeys("username" + Keys.TAB + "password");
driver.switchTo().alert().accept();

У меня это работает нормально

Ответ 4

Я несколько раз сталкивался с этой проблемой в своем приложении.

Обычно мы можем справиться с этим с помощью следующих 2 подходов.


  1. Передайте имя пользователя и пароль в самом URL


  2. Вы можете создать скрипт AutoIt и вызвать script перед открытием URL-адреса.


Пожалуйста, ознакомьтесь со статьей ниже, в которой я упомянул оба способа:

Обрабатывать окно аутентификации / входа в систему в Selenium Webdriver

java selenium selenium-webdriver