这是我的代码
{{1}}
我能够找到一个元素并点击它,但是当我这样做时,它会抛出一个错误。
答案 0 :(得分:0)
首次点击后,您的错误是:
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
这意味着点击后您就拥有了全新的html页面,旧页面中的所有元素都已过时(不会出现在新页面上)。
请注意, links_in_header 列表包含元素列表,但不包含链接(网址)本身。所以你可以做这样的事情(而不是点击):
links_in_header = header_by_xpath.find_elements(By.TAG_NAME,"a")
# get urls from tags
links_in_header = [x.get_attribute('href') for x in links_in_header]
for linkinheader in links_in_header:
driver.get(linkinheader)
答案 1 :(得分:0)
所以我不明白一件事,你通过xpath找到元素,为什么在搜索标题后你试图点击标题?
遵循此代码,它有效; ps你甚至选择了一个错误的xpath:
from selenium import webdriver
from selenium.webdriver.common.by import By
class Runfftest():
def test(self):
"""
Inistitate the ff browser
launch the browser
:return:
"""
baseUrl = "https://letskodeit.teachable.com/p/practice"
driver = webdriver.Firefox(executable_path="/usr/local/bin/geckodriver")
driver.get(baseUrl)
driver.implicitly_wait(10)
header_by_xpath = driver.find_element_by_xpath(".//*[@id='navbar']/div/div/a")
header_by_xpath.click()
ff = Runfftest()
ff.test()
PS:记得在完成后关闭浏览器:
driver.close()