Принять оповещение системы безопасности Windows с помощью Selenium

Среда: мне нужно протестировать веб-приложение с Selenium. Перед доступом к стартовой странице выдается предупреждение системы безопасности Windows. Поскольку всплывающее окно с предупреждением / проверкой находится на уровне операционной системы, его нельзя обработать с помощью selenium alert-api.

Обходной путь: для доступа к странице я написал сценарий, который заполняет имя пользователя и пароль, а затем нажимает клавишу ввода (код сценария из: https://automationtestingsimplified.wordpress.com/2011/08/11/how-to-handle-window-based-pop-up-using-selenium-and-autoit/).

Проблема, которую необходимо решить: Selenium выбрасывает «UnhandledAlertException: присутствует модальный диалог», хотя модальный диалог уже принят.

Я пытался:

  • Доступ к модальному диалогу через alert-api. Проблема в том, что я не могу ввести имя пользователя. Даже если я использую Robot. "driver.switchTo (). alert (). accept ();" тоже не работает.
  • Позвольте драйверу подождать, пока не появится предупреждение, с помощью "wait.until (ExpectedConditions.not (ExpectedConditions.alertIsPresent ()));"
  • Чтобы принять диалог, событие, если оно уже было принято.

Возможное решение: игнорировать диалоговое окно или установить его как отсутствующее в драйвере. Но я не могу найти для этого решения.


person Ore    schedule 13.08.2015    source источник
comment
можно ли предоставить ссылку на эту веб-страницу   -  person Madhan    schedule 13.08.2015
comment
Поскольку это внутренняя страница, предназначенная только для использования компанией, я не могу предоставить какие-либо ссылки. Но он работает на JBoss EAP 6.2 и использует старомодный JSF 1.2 вместе со швом и некоторыми другими технологиями.   -  person Ore    schedule 14.08.2015


Ответы (1)


Я столкнулся с той же проблемой. пока я не найду лучшее решение, я использую Robot для отправки ключей к предупреждению, чтобы принять его

private void acceptAlert() {
    try {
        Robot robot = new Robot();
        robot.keyPress(KeyEvent.VK_TAB);
        robot.keyPress(KeyEvent.VK_ENTER);
    } catch (AWTException e) {
        e.printStackTrace();
    }
}
person rob_E_jay    schedule 28.03.2017