我想转到第1页然后点击其他按钮以指向page2,然后点击第2页上的链接。 我的代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import selenium.webdriver.support.ui as UI
d = webdriver.Firefox()
d.get("https://www.youtube.com/")
d.find_element_by_xpath('//*[@id="appbar-nav"]/ul/li[2]/a/span').click()
wait = UI.WebDriverWait(d, 20)
next_page_link = wait.until(
EC.element_to_be_clickable((By.LINK_TEXT, 'FACTS ABOUT ME')))
next_page_link.click()
我添加了等待,但它仍然给出错误:
引发exception_class(消息,屏幕,堆栈跟踪) selenium.common.exceptions.StaleElementReferenceException:消息:元素不再附加到DOM
答案 0 :(得分:0)
如果一个元素根本不在DOM中,它将抛出NoSuchElementException。您说您收到了StaleElementReferenceException。当Web驱动程序搜索匹配的元素并找到一个匹配元素时,会发生该异常。然后,您可以引用该元素,但在单击它之前,它所绑定的元素将从DOM中删除。这通常是因为JavaScript库动态地更改了DOM并从页面中删除了节点,然后在其中放置了一个新节点。它(视觉上)仍然在页面上,但驱动程序先前找到的元素实例不再存在。处理它的唯一真正方法是,如果你在一个使用这样的JavaScript的网站上,就是将位置和执行包装在一个循环中,并尝试catch再次重试。