Python 获取错误“;消息:过时元素引用:元素未附加到页面文档";。我做错了什么

Python 获取错误“;消息:过时元素引用:元素未附加到页面文档";。我做错了什么,python,selenium,selenium-webdriver,staleelementreferenceexception,Python,Selenium,Selenium Webdriver,Staleelementreferenceexception,我在if语句中遇到以下错误: 陈旧元素引用:元素未附加到页面文档 当脚本试图对其执行某些操作的元素的属性发生更改时,会发生陈旧元素异常。如果要单击文本为“XXX”的范围,可以直接单击: connections=driver.find_elements_by_css_selector("a span[class='mn-connection-card__name t-16 t-black t-bold']") print(len(connections)) fo

我在if语句中遇到以下错误:

陈旧元素引用:元素未附加到页面文档


当脚本试图对其执行某些操作的元素的属性发生更改时,会发生陈旧元素异常。如果要单击文本为“XXX”的范围,可以直接单击:

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
如果您的要求是通过所有这些元素进行循环,那么:

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

你知道是什么导致元素过时吗?阅读一下导致它的原因,一旦你理解了它,你就会明白你需要在代码中修复什么。这个问题在互联网上已经被问了很多次,也被回答了很多次。而且,你的CSS选择器没有遵循CSS选择器的一般风格。它看起来更像一个XPath,如果不纠正它,可能会出现问题。更好的CSS选择器应该是span.mn-connection-card\uu name.t-16.t-black.t-bold“。谢谢rahul。陈旧的问题已解决。但if语句会导致另一个错误“列出索引超出范围”,您在哪一行获取索引超出范围?另外,由于您获得了列表的长度并尝试循环遍历它,您的页面是否也在更改?在行中--if connections[i]。text==“XXX”..有一个自动建议搜索字段..当我输入一封信时,它会显示与之匹配的姓名列表。如果姓名与之匹配,则应该单击该字段。如果您希望根据搜索字段中输入的文本来单击,请参见以下答案:
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