Obtention de l'erreur «Message: référence d'élément périmé: l'élément n'est pas attaché au document de page». Ce que je fais mal

Aug 19 2020
connections=driver.find_elements_by_css_selector("a span[class='mn-connection-card__name t-16 t-black t-bold']")
        print(len(connections))
for connection in connections:
    if connection.text == "XXX":
        connection.click()
        break

J'obtiens l'erreur suivante dans l'instruction if:

référence d'élément périmé: l'élément n'est pas attaché au document de page

Réponses

1 rahulrai Aug 19 2020 at 22:02

Une exception d'élément périmé se produit lorsque les propriétés de l'élément sur lequel votre script tente d'effectuer une opération sont modifiées. Si vous voulez cliquer sur une étendue avec le texte "XXX", vous pouvez directement cliquer dessus:

WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//a[span[text()='XXX']]")))

Si votre besoin est de boucler tous ces éléments, alors:

connections=driver.find_elements_by_css_selector("a span[class='mn-connection-card__name t-16 t-black t-bold']")
        print(len(connections))
for i in range(len(connections)):

    connections=driver.find_elements_by_css_selector("a span[class='mn-connection-card__name t-16 t-black t-bold']") #Created Fresh element list, so it wont be stale 
     if connections[i].text == "XXX"
         connections[i].click
         break