python - PYTHON - 启用元素的 StaleElementReferenceException
问题描述
我正在尝试单击"Next page"
in Python-Selenium
。可以看到元素及其路径,正在单击按钮,但单击后会显示错误:
"StaleElementReferenceException:stale element reference: element is not attached to the page document"
到目前为止我的代码:
element = WebDriverWait(driver, 20).until(EC.presence_of_element_located(\
(By.XPATH, butn)))
print (element.is_enabled())
while True and element.is_enabled()==True:
driver.find_element_by_xpath(butn).click()
element.is_enabled()==True
点击后的错误是一个
有人可以帮忙吗?
解决方案
当您在 Selenium 中搜索元素时,它不会保留完整的对象,而只会引用浏览器中 DOM 中的对象。然后当您click
浏览器创建新的 DOM 并且旧的引用不正确时,您必须再次查找元素。
像这样的东西
# find first time
element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, butn)))
print(element.is_enabled())
while element.is_enabled():
driver.find_element_by_xpath(butn).click()
# find again after changes in DOM
element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, butn)))
print(element.is_enabled())
推荐阅读
- python - 如何在处理列表时使用 .pop 和 .append 进行 FIFO(而不是 LIFO)?
- sql-server - 没有公共字段的连接表
- java - 在 android studio 上的 SQLITE 中使用 Like 语句
- javascript - 使用cheerio访问特定的div
- r - R 在使用 cv.tree() 时遇到致命错误
- mysql - 无法插入 MySQL
- sql - 有没有办法将两个条件与 SSRS 颜色表达式结合起来?
- sql - SUMIF、分组依据、聚合依据
- php - 提交日期输入自动 1969 年 12 月 31 日,留空
- css - 有没有办法在构建 Visual Studio 项目时自动删除未使用的 CSS 规则?