当元素不再附加到页面时,会引发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()
当然,每个变量都已声明,库也已导入。
你能解释一下为什么我还有那个例外吗?在此处输入图像描述
- 元素
- html dom已重建-可以使用已使用的定位器找到元素,但它不是步骤1中找到的元素(
- js脚本试图与步骤1中找到的元素交互(,但它不是同一个元素(它具有相同的属性等(,但在Selenium的情况下它是不同的元素
您可以通过检查添加/删除了哪些DOM元素来验证我的假设https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver