2017-09-16 32 views
0

我试图找到一个基于文本的元素,我可以在维基百科页面上的屏幕上看到。现在,我首先尝试driver.findElement(By.LinkText("English"));没有结果。 但后来我试着用driver.findElement(By.partialLinkText("English"));代码下面的代码,它的工作。 有人可以解释我基于该维基百科页面,为什么?因为这个例子非常简单,我不知道为什么driver.findElement(By.LinkText("English"));不起作用?硒中“By.partialLinkText”和“By.LinkText”之间的区别?

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

回答

1

名称说明了一切。
连结文字:它返回的元素与给定的文本
PartialLinkText回报元素,其中包括给定的文本

我已经看过http://www.wikipedia.org,我看到该链接还包括其他文本元素的精确匹配:

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

这就是为什么它不会找到的文本,因为它预计仅“英语”

+0

但“英文”是全文。 – Suppe

+0

不包含空格或其他字符吗? –

+0

好问题,当我用Firebug检查元素时,它说'英文'。所以我想没有空间或其他字符 – Suppe

1

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

By.partialLinkText: - 搜索其中存在的类似文本。

+0

是的,但“英文”是确切的文字,它没有工作! – Suppe

+0

你能分享html代码吗? –