Я раньше не использовал селен, но готов поспорить, что, если драйвер не найдет ничего, соответствующего этому xpath, он просто вернет None
. Другими словами, ваш код все еще действителен, потому что element
просто None
, что не вызывает ошибки. Вместо этого вы можете использовать while
l oop, чтобы продолжать обновлять, пока не найдет элемент. Добавление этой функции в отдельный поток или процесс не было бы плохой идеей, если у вас есть другие вещи, происходящие в основном l oop.
def retry_until_id_found(element_id, max_retries=100):
retries = 0
while not driver.find_element_by_xpath(element_id)
if retries <= max_retries:
time.sleep(3)
driver.refresh()
retries+=1
else:
print(f"ELEMENT {element_id} NOT FOUND")
return None
print(f"FOUND {element_id}")
return driver.find_element_by_xpath(element_id)
element = retry_until_id_found(r'//button[text()="SIGN UP"]')