" By.partialLinkText"之间的区别和#34; By.LinkText"在Selenium?

时间:2017-09-16 19:07:39

标签: c# selenium-webdriver

我试图找到一个基于我可以在维基百科页面屏幕上看到的文本的元素。现在,首先我尝试driver.findElement(By.LinkText("English"));没有结果。 但后来我用driver.findElement(By.partialLinkText("English"));尝试了下面的代码而且它有效。 有人可以根据维基百科页面解释我,为什么会这样?因为这个例子非常简单,我不知道为什么driver.findElement(By.LinkText("English"));不起作用?

driver.get("http://www.wikipedia.org");
WebElement link;
link = driver.findElement(By.partialLinkText("English"));
link.click();

4 个答案:

答案 0 :(得分:4)

这个名字说明了一切。
LinkText :它返回与给定文本完全匹配的元素
PartialLinkText 会返回包含给定文字的元素

我查看了http://www.wikipedia.org,我看到链接还包含其他文本元素:

<a ... > 
   <strong>English</strong> 
   <small>
      <bdi dir="ltr">5&nbsp;472&nbsp;000+</bdi>
      <span>articles</span>
   </small>
</a>

这就是为什么它找不到文本,因为它只需要“英语”

答案 1 :(得分:1)

By.LinkText: - 搜索其中存在的确切文本。

By.partialLinkText: - 搜索其中包含的类似文本。

答案 2 :(得分:1)

您可能只使用了id。如果存在ID,我几乎总是将其用于其他任何东西。

link = driver.FindElement(By.Id("js-link-box-en"));

答案 3 :(得分:0)

英语是该标签中文本值的一部分。完整的链接文本分为2个内部标签,如DOM结构所示,

<small>
      <bdi dir="ltr">5&nbsp;472&nbsp;000+</bdi>
      <span>articles</span>
</small>

在用户界面中: “英语 5876000+篇文章”

Which I shown it in the attached image for better understanding