StaleElementReferenceException,即使在具有显式等待时也是如此



我一直在尝试从AlgoExplorer网站抓取数据。它有一个带有分页的表来存储数据。即使我使用Explicit Wait来点击"next"按钮,它仍然会得到StaleException。这是我的一段代码,还有一张错误的图片:

for i in tqdm(range(5)): 
page = driver.find_element_by_tag_name('tbody').find_elements_by_tag_name('a')
for e in page:
pages.append(e.text)
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.pagination.next'))).click()

当然,每个变量都已声明,库也已导入。

你能解释一下为什么我还有那个例外吗?在此处输入图像描述

当元素不再附加到页面时,会引发StaleElementReferenceException。我的猜测是这个序列看起来像: 已找到
  1. 元素
  2. html dom已重建-可以使用已使用的定位器找到元素,但它不是步骤1中找到的元素(
  3. js脚本试图与步骤1中找到的元素交互(,但它不是同一个元素(它具有相同的属性等(,但在Selenium的情况下它是不同的元素

您可以通过检查添加/删除了哪些DOM元素来验证我的假设https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver

相关内容

  • 没有找到相关文章

最新更新