所以我要点击的元素就在这里:
<li class=" ">
<a href="google.de">
<i class="fa fa-lg fa-fw fa-profile"></i>
<span class="menu-item-parent ">Mein Konto</span>
</a>
</li>
现在我设置了以下 Java 代码:
WebElement konto = driver.findElement(By.xpath("//*[contains(text(),'Mein Konto')]"));
和
WebElement konto1 = driver.findElement(By.linkText("Mein Konto"));
但是在Chrome驱动程序中,它找不到该元素:
org.openqa.selenium.NoSuchElementException: no suchElement: Impossible to 定位元素: {"方法":"链接文本","选择器":"Mein Konto"}
xpath 工作正常,但对于我的测试团队来说,linktext 会更容易使用,所以我正在尝试使用它而不是 xpath。
DOM 就是这样,
<a href="google.de">
<i class="fa fa-lg fa-fw fa-profile"></i>
<span class="menu-item-parent ">Mein Konto</span>
</a>
只是"Mein Konto"不仅仅是链接文本。它将是部分链接文本,因为 
也在那里。我的建议是使用部分链接文本。
driver.findelement(By.partialLinkText("Mein Konto"));
编辑:
我想强调安德森的评论
链接文本中存在空格不是使用按partialLinkText
搜索的理由。只需从呈现的网页(而不是从 Chrome 开发控制台(复制链接文本并传递给By.linkText()
.它可能看起来像driver.findElement(By.linkText(" Mein Konto"))
;。但是,如果您确定页面上没有带有Mein Konto子字符串的其他链接,那么By.partialLinkText
就可以了。
linkText 方法与页面上显示的文本完全匹配。它不完全匹配可能是由于浏览器渲染问题。 您可以尝试使用Parital链接文本。
因为"Mein Konto"不是你所有的LinkText,而是在<span>
元素中,你不能使用By.linkText();
,因为 
是添加的。在这种情况下,您可以使用By.PartialLinkText();
来定位元素。
<span>
元素包含文本"Mein Konto">
如果你的元素是<a href='#'>Mein Konto</a>
那么你可以用 By.linkText(( 找到它;
在这里,您可以找到有关如何定位器工作的更多信息:
https://www.softwaretestingmaterial.com/how-to-locate-element-by-link-text-and-partial-link-text-locator/