尝试单击带有 selenium 和 Python 的超链接时出现 NoSuchElementException 错误 [重复]

Posted

技术标签:

【中文标题】尝试单击带有 selenium 和 Python 的超链接时出现 NoSuchElementException 错误 [重复]【英文标题】:NoSuchElementException error when trying to click a hyperlink with selenium and Python [duplicate] 【发布时间】:2022-01-07 22:58:25 【问题描述】:

我正在尝试在网页上查找数据列表,但该列表已隐藏,因此我需要浏览该页面。无论我尝试什么,我都无法找到一个超链接标签然后点击它。

有谁知道如何导航到以下超链接并点击:

    <li>
    <a href="#" class="accordion-toggle">
    == $0
        <span class="fa fa-briefcase">::before</span>
        <span class="sidebar-title">Batches</span>
        <span class="caret">::after</span>
        ::after
    </a>
    <ul class="nav sub-nav">::before
        <li class="active">
            <a href="#" aria-expanded="true">
                <span class="fa fa-table"></span>
                "Lijst"
                ::after
            </a>
        </li>
        ::after
    </ul>
</li>

由于您需要登录,我无法访问该页面,但有四个超链接具有相同的 href="#" 和 class="accordion-toggle"。因此,我有兴趣了解如何选择并单击它。

【问题讨论】:

【参考方案1】:

如果操作正确,xpath 就是解决方案。 使用绝对路径时问题的答案:

hyperlink_element = driver.find_element_by_xpath("/html/body/span[1]/div[2]/div[1]/aside[1]/div[1]/ul[1]/li[5]/a[1]")

使用相对路径的答案在引用类时也适用:

hyperlink_element = driver.find_element_by_xpath("//ul[@class='nav sidebar-menu']/li[5]/a[1]")

由于 find_element_by_* 在最新版本的 selenium 中已弃用,因此单击超链接的正确方法是:

hyperlink_element = driver.find_element(By.XPATH, "/html/body/span[1]/div[2]/div[1]/aside[1]/div[1]/ul[1]/li[5]/a[1]")
hyperlink_element.click()

【讨论】:

以上是关于尝试单击带有 selenium 和 Python 的超链接时出现 NoSuchElementException 错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

单击 div 包含带有 selenium python 的特定文本

在带有 selenium 的 python 中,如何轮换 IP 地址?

如何使用 selenium webdriver 单击此按钮?

NoSuchElementException:消息:尝试通过 Selenium 和 Python 单击 VISA 按钮时无法找到元素

如何在 C# 中单击带有 Selenium 的 JS 链接

AttributeError:“WebElement”对象没有属性“单击”错误尝试使用 Selenium Python 单击链接