Простите вопрос начинающего. У меня есть скрипт Webdriver (Java, JUnit4), который тестирует ряд очень похожих веб-страниц на наличие общих элементов.
На некоторых веб-страницах есть даты, на некоторых нет. Для тех, кто этого не делает, я хочу, чтобы результат теста напечатал «Текущая дата не отображается», а затем продолжил выполнение оставшейся части @Test.
Фрагмент кода, который я использую:
@Test
public void checkIfTodaysDateDisplayed(){
WebElement currentDate = driver.findElement(By.cssSelector(".currentDate"));
assertEquals("The current date is not displayed", currentDate.isDisplayed());
}
В настоящее время на тех страницах, которые не содержат дату, выдается исключение NoSuchElementException, и результат теста Jenkins просто показывает: «Невозможно найти элемент: {"метод":"селектор css","селектор":".currentDate"}"
Чего я хочу добиться, так это: а) напечатать значимое сообщение б) не останавливать тест, так как мне нужно запустить 5 или 6 других @Test для каждой страницы.
Какое лучшее/оптимальное решение исправить утверждение и справиться с этим? Блок Try/Catch?
РЕДАКТИРОВАТЬ: обновленный код:
WebElement currentDate = null;
try {
currentDate = driver.findElement(By.cssSelector(".currentDate"));
} catch (NoSuchElementException e) {
Assert.fail("The current date is not displayed! " + e.getMessage());
}
Assert.assertNotNull(currentDate);
Assert.assertEquals("The current date is displayed", currentDate.isDisplayed());
Если на странице ДЕЙСТВИТЕЛЬНО есть дата, консоль печатает:
java.lang.AssertionError:
Expected :The current date is displayed
Actual :true
Если на странице НЕТ даты, консоль выводит:
org.openqa.selenium.NoSuchElementException: Unable to locate element:
{"method":"css selector","selector":".currentDate"}