OpenQA.Selenium.NoSuchElementException:没有这样的元素:无法找到元素

OpenQA.Selenium.NoSuchElementException : no such element: Unable to locate element

提问人:KurryF 提问时间:11/8/2023 更新时间:11/8/2023 访问量:57

问:

我有一个网页,我正在尝试使用这个练习网站 https://practicetestautomation.com/practice-test-login/ 用硒自动化,我的脚本中有等待条件,所以我不确定为什么会发生这种情况。Selenium 无法找到抛出此异常的链接:

OpenQA.Selenium.NoSuchElementException:没有这样的元素:无法找到元素:{“method”:“链接文本”,“selector”:“练习”} (会话信息:chrome=119.0.6045.106);有关此错误的文档,请访问:https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception

我正在尝试在页面上找到“练习”URL,这是存在该 URL 的网页的代码:enter image description here

<nav class="menu"><ul id="menu-primary-items" class="menu-primary-items"><li id="menu-item-43" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-43"><a href="https://practicetestautomation.com/">Home</a></li>
<li id="menu-item-20" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20"><a href="https://practicetestautomation.com/practice/">Practice</a></li>
<li id="menu-item-21" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21"><a href="https://practicetestautomation.com/courses/">Courses</a></li>
<li id="menu-item-19" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19"><a href="https://practicetestautomation.com/blog/">Blog</a></li>
<li id="menu-item-18" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-18"><a href="https://practicetestautomation.com/contact/">Contact</a></li>
</ul></nav>

这是 Selenium 中的代码,说我有问题,:

IWebElement link = driver.FindElement(By.LinkText("Practice"));
String hrefAttr = link.GetAttribute("href");
C# Selenium-Chrome驱动程序 selenium-ide

评论


答:

0赞 Shawn 11/8/2023 #1

当您无法使用一种定位器策略(在您的情况下)定位元素时,您可以随时尝试使用其他定位器策略(例如)。 尝试使用以下 XPath 表达式 -LinkTextXPATH//li[@id='menu-item-20']//a

更改代码,如下所示:

IWebElement link = driver.FindElement(By.XPath("//li[@id='menu-item-20']//a"));
String hrefAttr = link.GetAttribute("href");
0赞 Gulzhas Mailybayeva 11/8/2023 #2

如上所述,尝试将 linkTest 更改为 xpath:

//a[text()='Practice']

也可以添加 implicitlyWait