2013-07-22 21 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

不知道,但只改變了一點點的查詢,不是背後的概念。 –

相關問題