У меня есть проблема, которую я точно не знаю, как решить. Я внедряю тест E2E, в котором с помощью селена мне нужно щелкнуть ссылку и проверить, что отправляет меня на правильный URL.
Здесь начинается проблема ...
Есть 3 варианта, сочетание двух типов ссылок, только один тип ссылки или другой тип ссылки. Нет проблем с ситуациями, в которых есть оба типа ссылок, но когда есть только один тип, когда он ищет идентификатор, который мы используем для ссылок, которых нет на странице, это дает мне исключение timeoutException. Это не ошибка, потому что это возможная ситуация, но я хотел бы знать, есть ли способ проверить, что, если он не находит ссылок, он утверждает, что выброшено исключение.
Хотя я использую runCatching (или попробуйте перехватить) дождитесь появления ссылки, и если она не появится, тест утверждает, что когда я ищу элемент, снова возникает исключение тайм-аута.
Для меня это немного пахнет делаю это, и я не знаю, правильно ли это сделано.
РЕДАКТИРОВАТЬ: я использую AssertK и JUnit5 для тестирования.
РЕДАКТИРОВАТЬ 2: я сделал это, я не знаю, если это правильный способ сделать это
runCatching {
driver.waitFor(numberOfWidgetsToBeMoreThan(BrowserSelector.cssSelector(OFFERS_WITH_PRICE_AND_DATE), 0), ofMillis(2000))
}.onFailure {
assertThrows<WaitTimeoutException> {
findLink(OFFERS_WITH_PRICE_AND_DATE)
}
}.onSuccess {
val widget = findLink(OFFERS_WITH_PRICE_AND_DATE)
widget.click()
assertThat(driver.url).contains(NO_DATE_TEXT)
}