Базовая аутентификация Selenium через URL HeadlessChrome (на сервере Linux) - PullRequest
0 голосов
/ 30 августа 2018

В моих тестах Selenium мне нужно протестировать веб-страницу, где я использую основной Authen, Зная, что я использую Chrome Headless Java и Selenium WebDriver. На моей машине «локально» работает отлично, используя driver.get("https://admin:admin@localhost.."); а потом driver.get("https://localhost..") например. Я знаю, что Chrome больше не поддерживает эту функцию, но мне удалось заставить ее работать на основе чьего-то решения, передав первый URL с учетными данными, а второй - без. Но когда я запускаю его на удаленном компьютере (Jenkins), на серверах Linux я получаю следующую ошибку

конфигурация вашего браузера не принимает куки

. У меня нет видения на серверах, когда я могу настроить Chrome ... есть идеи, как заставить его работать, не сталкиваясь с этой проблемой.

Я знаю, что многие люди задавали этот вопрос раньше, но я не нашел верного ответа на мой вопрос.

Ответы [ 3 ]

0 голосов
/ 31 января 2019

ChromeOptions options = new ChromeOptions();

// Флаг командной строки для включения согласованности учетной записи. Режим по умолчанию отключен.

options.addArguments("--account-consistency");

// Chrome, который начнет запись в файл при запуске

options.addArguments("--log-net-log=C:/some_path/resource/log.json");

// Устанавливает гранулярность событий для записи в сетевой журнал.

options.addArguments("--net-log-capture-mode=IncludeCookiesAndCredentials");

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

0 голосов
/ 31 января 2019

Здравствуйте! Мне удалось устранить проблему (я забыл упомянуть, что наш сайт защищен Siteminder), поэтому я сделал следующее:

1-Мы вводим ПОЛЬЗОВАТЕЛЯ и ПАРОЛЬ в URL:

Проблема, с которой мы столкнулись, заключалась в том, что отображаемое приглашение не было частью HTML страницы, и нам было трудно его перехватить с помощью Selenium. Мы справились с этим, введя логин и пароль пользователя в URL-адрес следующим образом: «https://USERNAME:PASSWORD@basicAuthentURL’ Это запустит сессию Chrome. Осторожно, это только первый шаг процесса. Идентификация пользователя еще не выполнена.

2- Мы создаем новый файл cookie:

После запуска URL-адреса мы должны вручную создать файл cookie с именем «SMCHALLENGE» и добавить его в текущий сеанс с Selenium, например, в JAVA: новый файл cookie («МАЛЕНЬКИЙ», «ДА»);

3 - Вызовите URL без учетных данных пользователя:

Поскольку теперь установлен файл cookie SMCHALLENGE, последним шагом является повторный вызов URL (https://basicAuthentURL). Файл cookie SMCHALLENGE будет удален после успешной аутентификации, и Siteminder сгенерирует файл cookie SMSESSION. Cookie-файл SMSESSION теперь позволяет нам вызывать приложение и успешно передавать Siteminder, как если бы он входил в систему (через SSO).

Дайте мне знать, если вы попробуете это.

0 голосов
/ 31 января 2019

попробуйте ChromeDriver 2,45 ( changelog ) или измените место, где предполагается сохранять куки:

ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/custom/profile");

в противном случае (по умолчанию) он будет создавать новый временный каталог при каждом запуске сеанса.

...