我试图访问网页, 保存我想要点击的页面的一组链接,然后 如果是for循环,我想点击每个链接(在页面上来回。这是代码:
from selenium import webdriver
driver = webdriver.Chrome(executable_path='/Applications/chromedriver')
driver.get("webpage link") #insert link to webpage
list_links = driver.find_elements_by_xpath("//a[contains(@href,'activities')]")
for link in list_links:
print(link)
link.click()
driver.goback()
driver.implicitly_wait(10) # seconds
driver.quit()
但是,我第一次回到主页时收到错误消息:
StaleElementReferenceException: stale element reference: element is not attached to the page document.
任何人都可以帮我理解原因吗?建议一个解决方案? 谢谢。非常感谢。
答案 0 :(得分:1)
您的mutate_(df, number = name) %>% mutate(number = as.numeric(substr(number, 6, 7)
仅适用于定义它的页面。首次单击重新创建的链接DOM后,对list_links
元素的引用将变为无效。您可以在以下解决方案中申请:
list_links
P.S。我假设driver.implicitly_wait(10) # seconds
list_links = [link.get_attribute('href') for link in driver.find_elements_by_xpath("//a[contains(@href,'activities')]")]
for link in list_links:
print(link)
driver.get(link)
driver.goback()
driver.quit()
是您自定义的自定义方法,因为Selenium内置函数中没有这样的方法,只是goback()
P.P.S。请注意,您只能在代码中拨打back()
一次,它将适用于所有下一次driver.implicitly_wait(10)
来电
答案 1 :(得分:0)
很简单,你试图保存一个html(链接)的元素,这些元素不能被代码(循环逻辑)引用,这就是它抛出这个错误的原因。最重要的是你试图保存的硒对象,你不应该这样做。应该是你在数组中保存链接的确切值然后循环它们。