Selenium Chromedriver 无法通过 LinkText 找到元素,但 Geckodriver 可以找到



所以我要点击的元素就在这里:

<li class=" ">
<a href="google.de">
<i class="fa fa-lg fa-fw fa-profile"></i>&nbsp;
<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>&nbsp;
<span class="menu-item-parent ">Mein Konto</span>
</a>

只是"Mein Konto"不仅仅是链接文本。它将是部分链接文本,因为&nbsp也在那里。我的建议是使用部分链接文本。

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();,因为&nbsp是添加的。在这种情况下,您可以使用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/

相关内容

  • 没有找到相关文章

最新更新