@quantum32043

Как я могу использовать меньше конструкций try-except?

В общем, имеется следующий код:
try:
            close_error = browser.find_element(By.XPATH, "//div[contains(text(),'Такой код не найден!')]")
            close_error.click()
        except NoSuchElementException:
            try:
                close_error = browser.find_element(By.XPATH, "//div[contains(text(),'Данный код не может быть использован')]")
                close_error.click()
            except NoSuchElementException:
                close_error = browser.find_element(By.XPATH, "//div[contains(text(),'Вы не можете использовать код')]")
                close_error.click()

Мне абсолютно не нравится такое злоупотребление конструкцией try-except, однако я не смог придумать альтернативного решения. Здесь бы не помешало использования оператора if-elif-else, но я не смог найти информацию, возможно ли как-то использовать их для обработки ошибок. Буду очень признателен за любой совет!
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
@bacon
find_elements позволяет вообще обойтись без исключений
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
Иногда проще отрефакторить такое в список или словарь.
errors = [
  "//div[contains(text(),'Такой код не найден!')]",
  "//div[contains(text(),'Данный код не может быть использован')]",
  "//div[contains(text(),'Вы не можете использовать код')]",
]

for err in errors:
  try:
    close_error = browser.find_element(By.XPATH, err)
    close_error.click()
    break
  except NoSuchElementException:
    pass
else:
  print("Not a single error was found")
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 250 000 ₽
AGIMA Москва
от 250 000 ₽
23 мая 2022, в 04:14
10000 руб./за проект
23 мая 2022, в 00:03
3000 руб./за проект
22 мая 2022, в 23:58
2000 руб./за проект