Я не думаю, что вам нужно столько, сколько у вас есть.
Мой c# лучше, чем мой java, но я бы использовал такую структуру. Я запустил его в intellij, и, похоже, он работает, но у меня нет ваших действий и сайта, чтобы проверить его.
@Test
public void myCode() throws Exception {
exceptionMessage = "";
Integer sec = 10;
WebDriverWait wait = new WebDriverWait(driver, sec);
try {
wait.until((WebDriver dr) ->
{
try {
//Your actions go here
//this one will always fail - comment it out to make it pass
dr.findElement(By.tagName("I will fail you!")).click();
return true;
} catch (Exception e) {
exceptionMessage = e.getMessage();
return false;
}
});
} catch (TimeoutException e) {
throw new Exception("Timeout: [" + sec + "] seconds, Exception message: [" + exceptionMessage + "]");
}
System.out.println("The exception message is.... " + exceptionMessage);
}
Я только что добавил очевидный сбойный элемент.
С этим раскомментированным:
dr.findElement(By.tagName("I will fail you!")).click();
Возвращает строку перехвата ошибки тайм-аута. Я получаю:
java .lang.Exception: Тайм-аут: 1 секунд, сообщение об исключении: [такого элемента нет: невозможно найти элемент: {"метод": " css selector "," selector ":" I \ will \ fail \ you! "} (Информация о сеансе: chrome = 84.0.4147.105)
Если он закомментирован - он ничего не возвращает в сообщение об исключении (поэтому вернулось true, поэтому вернули проход):
intellij нет текста ошибки