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

时间:2018-09-28 11:10:20

标签: java selenium selenium-chromedriver 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:无此类元素:无法   定位元素:{“方法”:“链接文本”,“选择器”:“ Mein Konto”}

xpath可以正常工作,但是对于我的测试团队来说,链接文本将更易于使用,因此我尝试使用它代替xpath。

4 个答案:

答案 0 :(得分:1)

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是可以的。

答案 1 :(得分:0)

<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/

答案 2 :(得分:0)

linkText方法完全匹配页面上显示的文本。可能由于浏览器渲染问题而导致不完全匹配。 您可以尝试使用Parital链接文本。

答案 3 :(得分:0)

因为'Mein Konto'并不是您所有的LinkText,而是在<span>元素内,所以不能使用By.linkText();,因为添加了&nbsp。在这种情况下,您可以使用By.PartialLinkText();来定位元素。