尝试单击带有 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 按钮时无法找到元素
AttributeError:“WebElement”对象没有属性“单击”错误尝试使用 Selenium Python 单击链接