selenium关于selenium.common.exceptions.StaleElementReferenceException异常处理

avatar
作者
筋斗云
阅读量:2

selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: stale element not found in the current frame

解释:

StaleElementReferenceException
异常在使用Selenium时出现,意味着尝试与一个页面元素进行交互,但这个元素已经不再是当前页面的一部分了。这通常发生在页面刷新或跳转后,之前保存的元素引用就变得过时。

解决方法:

每次操作元素之前,确保页面是最新的。可以通过执行一个简单的JavaScript脚本来刷新页面,或者使用WebDriver的refresh()方法。

当定位元素后,尽快进行交互。如果页面发生变化,重新定位元素。

使用显式等待(Explicit Wait),在尝试交互之前确保元素是可交互的。

如果在循环中操作元素,确保循环的每次迭代都使用最新的元素引用。

示例代码:

from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC   #显式等待条件 wait = WebDriverWait(driver, 10) element = wait.until(EC.presence_of_element_located((By.ID, "my-id"))) # 现在可以安全地与element交互了 element.click() 

在这个示例中,使用了WebDriverWait和expected_conditions来确保在交互之前元素是存在并且可交互的。这有助于减少这种异常的发生。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!