Всем доброго времени суток!
Имеется цикл, который рано или поздно выдаст ошибку:
for (int i = 1; ; i++)
{
IWebElement boom = driver.FindElement(By.Id("content"));
...
...
...
}
Цикл как бы перебирает элементы с нужным id и далее проводит с ними определенный набор операций. Каждый раз кол-во данных элементов разное, поэтому предугадать момент, когда цикл сломается нельзя... или можно? :)
Каким образом можно отловить ошибку с поломанным циклом и продолжить работу? Брать весь блок в try-catch? Какое Exception брать в данном случае, если использовать try? Быть может, есть вариант без изобретения велосипедов?
Во время работы данного for происходит однократное(за один круг цикла) открытие нового окна, с переключением WebDriver на него:
driver.SwitchTo().Window(driver.WindowHandles.Last());
Возможно, есть вариант отловить отсутствие нового окна? Ошибка вылетает сразу после данной строки. На данном элементе:
IWebElement beornottobe = driver.FindElement(By.Id("Be-be"));
Но после идёт еще не малая часть кода...
Какое Exception брать в данном случае, если использовать try?
В документации сказано что это будет NoSuchElementException.
for (int i = 1; ; i++) {
IWebElement boom;
try {
boom = driver.FindElement(By.Id("content"));
} catch (NoSuchElementException) {
break; //прерываем цикл в случае ошибки
}
...
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости