在标题中动态查找元素,然后单击它们以在python selenium中进行验证

时间:2018-03-06 07:08:14

标签: python python-3.x selenium automation

这是我的代码

{{1}}

我能够找到一个元素并点击它,但是当我这样做时,它会抛出一个错误。

2 个答案:

答案 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()