Comment éviter NoSuchElementException dans le sélénium? [dupliquer]

Aug 18 2020

nouveau à tout cela, donc je m'excuse si c'est une question stupide.

voici tout ce que j'essaye de faire :

nxt_btn = driver.find_element_by_xpath('/html/body/main/article/section/form/div[2]/button')
nxt_btn.click()
time.sleep(2)
vote_check = driver.find_element_by_xpath('/html/body/main/article/section/form/div[1]/div[2]/div/div/fieldset/div/div/div[2]/div/input')
vote_check.click()
time.sleep(2)
nxt_btn = driver.find_element_by_xpath('/html/body/main/article/section/form/div[2]/button')
nxt_btn.click()
driver.quit()

et ça retourne :

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/main/article/section/form/div[1]/div[2]/div/div/fieldset/div/div/div[2]/div/input"}


(Session info: chrome=84.0.4147.125)

J'ai essayé de changer le temps d'attente, de choisir différents éléments et de vérifier s'il se trouve dans un iframe, ce qui, si c'est le cas, je ne le trouve pas en remontant simplement le chemin.

Réponses

1 AmrutaPande Aug 18 2020 at 12:18

Au lieu de dormir, utilisez les attentes explicites Selenium

 element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.XPATH, "XPATH"))

Les conditions que vous pouvez utiliser sont :

  1. visibilité_de_l'élément_localisé
  2. text_to_be_present_in_element
  3. element_to_be_clickable