Как упростить конструкцию из нескольких try except в python

Столкнулся с проблемой, которая показана на скриншоте, можно ли как-то упростить конструкцию try-except?

    try:
        storage.driver.find_element(by=By.XPATH, value='первое значение').send_keys(text + storage.Keys.ENTER)
    except:
        try:
            storage.driver.find_element(by=By.XPATH, value='второе значение').send_keys(text + storage.Keys.ENTER)
        except:
            try:
                storage.driver.find_element(by=By.XPATH, value='третье значение').send_keys(text + storage.Keys.ENTER)
            except:
                try:
                    storage.driver.find_element(by=By.XPATH, value='четвертое значение').send_keys(text + storage.Keys.ENTER)
                except:
                    try:
                        storage.driver.find_element(by=By.XPATH, value='пятое значение').send_keys(text + storage.Keys.ENTER)
                    except:
                        storage.driver.find_element(by=By.XPATH, value='шестое значение').send_keys(text + storage.Keys.ENTER)

Ответы (2 шт):

Автор решения: Stanislav Volodarskiy

Не надо строить логику на каскадах ошибок. Плохая идея. Поменяйте find_element на find_elements, перебирайте значения в цикле, выходите из функции при первом найденом элементе:

def send_text_to_first_element(values, text):
    for v in values:
        for e in storage.driver.find_elements(by=By.XPATH, value=v):
            e.send_keys(text + storage.Keys.ENTER)
            return


values = (
    'первое значение',
    'второе значение',
    'третье значение',
    'четвертое значение',
    'пятое значение',
    'шестое значение'
)
send_text_to_first_element(values, text)
→ Ссылка
Автор решения: Pavel.img
def func(attempts_counter):
    try:
        # код здесь
    except:
        func(attempts_counter + 1)

Попробуйте так

→ Ссылка