Вам не нужно использовать implicitly_wait()
в коде несколько раз. Согласно документации , вам нужно установить ее только один раз.
Всегда лучше использовать явное ожидание, которое ожидает только до тех пор, пока не будет выполнено ожидаемое условие.
Проблема здесь в том, что вы не используете даже неявное ожидание перед поиском элемента. Вы устанавливаете его на ноль, прежде чем пытаться найти элемент.
Попробуйте следующий код:
def exists_by_text(driver, text):
try:
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH,"//*[contains(text(), '"+str(text)+"')]")))
# except NoSuchElementException:
except TimeoutException:
return False
return True
Для этого вам понадобится следующий импорт:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC