J'essaie de localiser l'élément en
element=driver.find_element_by_partial_link_text("text")
in Python Selenium et l'élément n'existe pas toujours. Existe-t-il une ligne rapide pour vérifier s'il existe et obtenir NULL ou FALSE à la place du message d'erreur lorsqu'il n'existe pas?
Vous pouvez implémenter le bloc try
/except
comme ci-dessous pour vérifier si l'élément est présent ou non:
from Selenium.common.exceptions import NoSuchElementException
try:
element=driver.find_element_by_partial_link_text("text")
except NoSuchElementException:
print("No element found")
ou vérifiez la même chose avec l'une des méthodes find_elements_...()
. Il devrait vous renvoyer une liste vide ou une liste d'éléments correspondant au sélecteur passé, mais aucune exception dans le cas où aucun élément n'a été trouvé:
elements=driver.find_elements_by_partial_link_text("text")
if not elements:
print("No element found")
else:
element = elements[0]
Parfois, l'élément n'apparaît pas immédiatement, pour ce cas, nous devons utiliser l'attente explicite:
browser = webdriver.Chrome()
wait = WebDriverWait(browser, 5)
def is_element_exist(text):
try:
wait.until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, text)))
except TimeoutException:
return False
Solution sans try/ except
:
def is_element_exist(text):
elements = wait.until(EC.presence_of_all_elements_located((By.PARTIAL_LINK_TEXT, text)))
return None if elements else False
Comment fonctionne l'attente explicite, vous pouvez lire ici .
Importations:
from Selenium import webdriver
from Selenium.webdriver.support.ui import WebDriverWait
from Selenium.webdriver.common.by import By
from Selenium.webdriver.support import expected_conditions as EC