Насколько я понимаю, вы хотите найти элемент на какой-то странице, и если вы не можете его найти, вам нужно обновить страницу, чтобы повторить поиск. Если это ваше требование, то вы можете сделать так:
wait = WebDriverWait(driver, 30);
try:
quote = wait.until(EC.element_to_be_clickable((By.XPATH, '//h4[@class="quote-number ng-binding"]'))).text.split("#")[1]
except TimeoutException:
driver.refresh()
В приведенном выше коде блок try выдаст исключение TimeoutException, если элемент не найден в течение заданного времени ожидания. Блок исключений перехватит это исключение, и оно будет соответствовать, а затем обновит страницу.
Приведенный выше код выполнит эту операцию только один раз. Если вы хотите продолжить этот процесс, пока не найдете элемент, используйте следующий код:
notFound = True
while notFound:
wait = WebDriverWait(driver, 30);
try:
quote = wait.until(EC.element_to_be_clickable((By.XPATH, '//h4[@class="quote-number ng-binding"]'))).text.split("#")[1]
notFound = False
except TimeoutException:
driver.refresh()
Но вышеприведенное решение не рекомендуется, потому что, если оно не находит элемент, который ищет, код переходит в состояние цикла бесконечности. Чтобы избежать этого, я рекомендую вам использовать FluentWait, как показано ниже:
wait = WebDriverWait(driver, 60, poll_frequency=5, ignored_exceptions=[NoSuchElementException, StaleElementReferenceException]);
quote = wait.until(EC.element_to_be_clickable((By.XPATH, '//h4[@class="quote-number ng-binding"]'))).text.split("#")[1]
, который будет искать элемент каждые 5 секунд, игнорируя исключения NoSuchElementException, StaleElementReferenceException вплоть до 1 минуты времени. Надеюсь, это поможет ...