Фреймворк робота обрабатывает всплывающее окно аутентификации - PullRequest
0 голосов
/ 05 августа 2020

Мне нужно обработать всплывающее окно аутентификации в браузере chrome с помощью Robot Framework, нажав клавишу ввода, клавиши es c или нажав кнопку отмены. Вот так введите описание изображения здесь

Я пытаюсь использовать клавиши SeleniumLibrary Press,

Press Keys    None    ESC

Но это не работает

Кто-нибудь знает, как решить эту проблему? Спасибо

Ответы [ 2 ]

2 голосов
/ 05 августа 2020

К сожалению, здесь вы ничего не можете сделать через Selenium. Это окно из так называемой basi c аутентификации , где ожидается, что пользователь введет имя пользователя и пароль, и обрабатывается на уровне http. Элемент управления, который вы видите - диалоговое окно - является компонентом ОС, частью самого исполняемого файла браузера; как таковой, Selenium не может взаимодействовать с ним - он изолирован от него (специально, в целях безопасности).

Есть несколько обходных путей; учетные данные для базовой c аутентификации могут быть переданы через URL-адрес - если целевая система не запрещает это явно. Это делается через специальный формат url:

http://username:password@example.com/

Другой - использовать библиотеку для автоматизации рабочего стола - AutoIt или Java Robot. Но у этого есть 2 (огромных для меня) недостатка - решение будет зависеть от ОС (например, одно для Windows и другое для Ma c, Linux), и в основном - вы не можете использовать его в удаленном селене. сеанс - у вас должна быть запущена автоматизация рабочего стола на удаленном компьютере, с сеансом рабочего стола, который он перехватывает, и доступным с вашей исполнительной машины.

0 голосов
/ 05 августа 2020

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

  1. Получите указатель всплывающего окна и переключитесь на окно, а затем выполните вашу команду. https://robotframework.org/SeleniumLibrary/SeleniumLibrary.html#Switch% 20Window

Пример:

Switch Window   MAIN
Press Keys      None         ESC

если вы не уверены в локаторе окна, вы можете проверить активный список windows

Пример:

${windowlist}    Get Window Handles
Log              ${windowlist}
Если вышеуказанное не сработало, проверьте, содержит ли всплывающее окно iframe, и перед тем, как пытаться использовать какие-либо команды go внутри iframe

Пример:

Select Frame    id:popup
Press Keys      None         ESC

ура.

...