“Поймать” ошибку цикла for

209
26 сентября 2018, 01:00

Всем доброго времени суток!

Имеется цикл, который рано или поздно выдаст ошибку:

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"));

Но после идёт еще не малая часть кода...

Answer 1

Какое Exception брать в данном случае, если использовать try?

В документации сказано что это будет NoSuchElementException.

for (int i = 1; ; i++) {
    IWebElement boom;
    try {
        boom = driver.FindElement(By.Id("content"));
    } catch (NoSuchElementException) {
        break; //прерываем цикл в случае ошибки
    }
...
READ ALSO
Не изменяется App.config при добавлении сервиса WCF C#

Не изменяется App.config при добавлении сервиса WCF C#

Такая ситуация, создал контракт в виде библиотеки, создал реализацию в виде консольного приложения (хост)Сбилдил все

208
Как обновить DataSet C#

Как обновить DataSet C#

Пишу проект на С# (Visual Stadio) WindowsFormApplication

185
Что означает оператор *= или -=

Что означает оператор *= или -=

В качестве примера в учебнике есть вот такой код:

189
Изменить положение названия формы

Изменить положение названия формы

В примере название формы находится по центру

189