Как в Selenium Java обойти UnhandledAlertException?
Мне нужно пройти авторизацию на сайт
Пробую так
DesiredCapabilities dc = new DesiredCapabilities();
dc.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.IGNORE);
try {
Alert alert = driver.switchTo().alert();
String alertText = alert.getText();
System.out.println("Alert data: " + alertText);
driver.findElement(By.name("Username")).sendKeys("");
driver.findElement(By.name("Password")).sendKeys("");
alert.accept();
} catch (NoAlertPresentException e) {
e.printStackTrace();
}
Тест падает при поиске элемента Username с ошибкой
UnhandledAlertException
У меня вопрос, правильно ли я ищу эти элементы по имени, если доступа в доме элементов к ним нет, ни по css ни по xpath. Если ищу правильно, то как переписать код, чтоб не получить UnhandledAlertException?
Спасибо.
catch "Throwable t" ( if it exists in this variant of Java ).
The downside, if it is intercepted, it may, potentially, intercept everything else.
So, you may want to check for specific error message, before letting it be ignored.
So that you do not miss something interesting.
Мирон, К сожалению, после catch "Throwable t" тест завис, я ждала около минуты и сама закрыла браузер, так что сколько надо ждать, чтоб тест упал и увидеть ошибку не понятно...)
I wonder if the issue is in catch. One thing that did chance, based on your description, is you no longer getting unhandled exception.
It can be useful to standup another attempt to login, in case "hanging" behavior was due to some kind of seldom/one off condition.
Changing focus a bit, here is similar question in Stack Overflow
See if it provides any help.
Also, rather than going for a stack trace, I'd use println (t.getMessage());
and put another println("past catch") right after the catch.
Running these few lines in debugger is even better. Usually in debugger there is command window or some other way to find how to explore elements in the driver, though you did say it's not producing anything in initial description, you still have browser's development tools ( F12 ) to inspect the page and find how to identify elements.
Sometimes elements are obstructed due to SSL ( https ) protocol, in which case it can be useful to ask developer or ops team to open access on port 80 ( http ) to train testing scripts, once scripts works, even if elements obscured by means of https connection, the script will still be working.
сергей кузьмин, Привет! Способ искать инпуты по имени неверный. Нашла другой способ, с помощью программки - AutoIt.
Её скачиваешь, потом делаешь скрипт
Send("логин")
Send("{TAB}")
Send("пароль")
Send("{ENTER}")
И всё заработало!_
Всем спасибо за помощь и участие!!!)
Сейчас задам новый вопрос...)
Мирон, Привет! Спасибо большое за помощь!!! Нашла другой способ, с помощью программки - AutoIt.
Её скачиваешь, потом делаешь скрипт
Send("логин")
Send("{TAB}")
Send("пароль")
Send("{ENTER}")
И всё заработало!
Сейчас пытаюсь решить другой вопрос - вот ссылка, буду рада, если сможете помочь - https://qna.habr.com/q/1165822
Спасибо.
Olga_AQA,
не поделитесь деталями по AutoIt?
я может сам и дотёпаю, но многим здесь на форуме без вашей помощи не справиться, уж поделитесь, если будет время и настроение. очень рад, что у Вас все хорошо!
Мирон, Давайте я скину статью, которая мне очень помогла пройти эту авторизацию, только скрипт берите, как у меня в комменте, в статье ошибка...) https://www.lambdatest.com/blog/handling-login-pop...
Будут вопросы, пишите. Но думаю статья поможет!
замечательная статья, спасибо.
Если Вы не против пожалуйста скопируйте комментарий в собственный ответ на собственный вопрос, и примите его, как ответ.