2013-07-22 20 views
2

如何确认使用Java在网页上显示“查找我请”的文字?请参考下面的HTML代码:使用Selenium WebDriver在网页中显示确认文本

<table width="600" border="0" cellspacing="5" cellpadding="0"> 
    <tr><td class="fontlargebold" align="center">&nbsp;FIND ME PLEASE&nbsp;</td></tr> 
</table> 

困难在于HTML代码不具有ID,名称,值等属性。我尝试使用xpath(By.xpath("//*[text()=[contains('FIND ME PLEASE')]]"))),但我认为它不正确...

+0

你没有正确使用'contains'功能。 'contains'需要两个参数,第一个是要搜索的内容,第二个是搜索字符串。有关示例,请参阅[W3C规范中的contains()](http://www.w3.org/TR/xpath-functions/#func-contains)。 – tfoo

回答

3

您的XPath确实是错误的。

使用

By.xpath("//*[contains(text(), 'FIND ME PLEASE')]") 

做你的工作方法在整个Java代码:

public boolean isTextPresent(String text) { 
    List<WebElement> foundElements = driver.findElements(By.xpath("//*[contains(text(), '" + text + "')]")); 
    return foundElements.size() > 0; 
} 
+0

它工作!我真的很感激快速的回应。为了好奇,为什么路径必须是(...,''+ text +''),而不仅仅是(...,text)?谢谢。 – Hypaa

+0

我没有足够的声望来投票给你...... – Hypaa

+0

@ user2607278因为在'“// * [包含(text(),text)]”','text'不是一个变量名,而是一个字符串。 Tha结构我在那里连接了XPath表达式和'text'变量的内容。搜索Java字符串连接。没有问题的投票,如果答案有帮助,[接受它](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)! –

0

如果你有兴趣这个文本是否发生的地方,也可能包含其他标记,去

contains(/html/body, 'FIND ME PLEASE') 

当找到内容时将返回一个布尔值。

如果您需要返回的元素,而不是一个布尔值,你可以做到这一点,太:

/html/body[contains(., 'FIND ME PLEASE')] 
+0

虽然这是真的,但在当前上下文(Selenium WebDriver)中,没有方法可以接受XPath表达式并返回布尔值。没有解决方法,我们只能请求节点。 –

+1

不知道,但只改变了一点点的查询,不是背后的概念。 –

相关问题