Selenium package - StateElementReferenceException



我的脚本中有以下部分代码:

elements = driver.find_elements(By.TAG_NAME, 'p')
for e in elements:
if e.text not in elenco:
print(e.text)
elenco.append(e.text)
if ("Denis" in e.text):                   
print("Find Denis")

脚本多次打断这些行,并显示以下消息:

selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document

在其他行中的其他时间(后面(显示类似的消息,如:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {“method”:“css selector”,“selector”:“[id=“submitmessage”]”}

当网页在这些行中发生更改时,它似乎发现了问题。有人能帮我修一下吗?感谢

对于第一条错误消息:

简而言之,消息表明您要查找的元素已不在DOM中,或者它已更改。

你可以尝试下面这样的方法来帮助

# Add some items to your import statements, to help handle exceptions
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import StaleElementReferenceException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
# Then, add some code to help handle exceptions
target_Tag_Name = "p"
ignored_exceptions=(NoSuchElementException,StaleElementReferenceException)
your_element = WebDriverWait(your_driver, some_timeout,ignored_exceptions=ignored_exceptions)
.until(expected_conditions.presence_of_element_located((By.TAG_NAME, target_Tag_Name)))
# Then place your code below
elements = driver.find_elements(By.TAG_NAME, 'p')
for e in elements:
if e.text not in elenco:
print(e.text)
elenco.append(e.text)
if ("Denis" in e.text):                   
print("Find Denis")

下面的链接可能会为第一条错误消息提供更多的上下文:

Python Selenium 上的StaleElementReferenceException

对于第二条错误消息:

简而言之,消息是说在页面上找不到该元素。

这可能是因为脚本运行得太快,并且页面没有时间完全加载。

有几种方法可以帮助解决这个问题——下面的线程可能会提供更多的上下文

selenium.com.mon.exceptions.NoSuchElementException:消息:无法定位元素:

请注意,your_element变量上方的代码段包含一个WebDriverWait语句,这可能会减慢脚本的执行速度,使页面能够加载(基本上,上面的代码段可能会解决第二条错误消息(

相关内容

  • 没有找到相关文章

最新更新