Сообразил только в Catch менять переменную и с помощью goto повторять часть кода, а как правильно делать ?
int kolVSpiske = list.Count - 1;
IWebElement elem = null;
povtor:
try
{
elem = driver.FindElement(By.XPath("//*[.='" + list.ElementAt(kolVSpiske) + "'][last()]"));
}
catch (InvalidSelectorException)
{
elem = driver.FindElement(By.XPath("//*[.=concat('" + XpathEncode(list.ElementAt(kolVSpiske)) + "')][last()]"));
}
catch (NoSuchElementException)
{
kolVSpiske -= 1;
goto povtor;
}
UPD:
На основе комментариев, по вопросу вроде всё стало понятно, т.е. нужен цикл и в случае удачи - покинуть его.
Но не совсем понятно почему плохо использовать goto. Ведь он в моём случае делает тоже самое что и сделал бы цикл - нет ?
И так же код получит исключение - когда исчерпается list.
UPD:
Сам того не осознавая, оказалось, что с вопросом о goto, я коснулся извечного вопроса. Почитав штук 10 разных дискуссий о нём и вот такую статью:
Habr - GOTO or not GOTO вот в чём вопрос
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости