повторная попытка кода с незначительными изменениями, пока он не заработает в python - PullRequest
0 голосов
/ 26 марта 2020

Как я могу повторить код с помощью функции try? Идея такова:

try:
interaction_type2 = driver.find_elements_by_xpath('web.page.interaction1')
except Error:
interaction_type2 = driver.find_elements_by_xpath('web.page.interaction2')

каждый раз, когда оно должно добавить к взаимодействию +1 и l oop через него до тех пор, пока не возникнет ошибка, поэтому попробуйте выполнить код каждый раз, пока он не сделает это успешно. Я попробовал это с al oop, но не получил желаемого результата.

Код, который у меня есть:

    while True:
    x = 'web.page.interaction-70"]'
    try:
        interaction_type2 = driver.find_elements_by_xpath(x) # next 136 then 202, 268
    except Exception:
        x = x.replace('70', '138')
        interaction_type2 = driver.find_elements_by_xpath(x)
    interaction_type2.click()

, не уверен, как я могу изменить это на каждом ошибка, без записи каждой строки.

1 Ответ

2 голосов
/ 26 марта 2020

Вы можете заменить каждое значение по необходимости.

for value in [70, 136, 202, 268]:
    x = f'web.page.interaction-{value}"]'
    try:
        interaction_type2 = driver.find_elements_by_xpath(x)
    except Exception:
        continue
    else:
        interaction_type2.click()
        break

Если вам нужно продолжать пробовать значения, превышающие 268, взгляните на itertools.count. Вы бы oop более itertools.count(start=70, step=66). Это может быть опасно, однако, если каждый запрос завершается неудачей, давая бесконечное значение l oop. Вы можете связать свой поиск, используя вместо этого range(70, some_high_value, 66).

...