2014-10-01 47 views
0
<button id="s:button" class="gui-button" type="submit" onclick="" name="s:button" role="button"> 
    <span class="btext gui-a">OK</span> 
</button> 

我想檢查字符串'OK'是否在子節點(例如跨度)或按鈕中。我試圖向以下XPath:檢查節點或Innernode是否等於Selenium中的文本

//按鈕[@類型= '提交'] //子::文本()= 'OK' 或//文本()= 'OK'

它工作正常 - 但在硒中,我得到一個com.thoughtworks.selenium.SeleniumException:錯誤:命令執行失敗.-命令請求:isElementPresent [xpath = // button [@ type ='submit'] // child ::在會話7XXXX上的text()='OK'或// text()='OK',]。是否有必要使用不同的XPath語法?

+0

這是有點壞的測試設計。該應用程序應該是一致的。如果是跨文本,那麼你可以使用:(CSS)'button [type ='submit']> span.btext'不需要添加額外的檢查。 – sircapsalot 2014-10-01 15:14:28

回答

1

要檢查按鈕或按鍵的孩子的文本節點的文本節點等於"OK"

//button[@type='submit'][child::*/text()='OK' or text()='OK'] 

注意child::text()指的是按鈕的直接子文本節點,你的HTML樣本沒有按沒有這種類型。要參考的文本節點,該按鈕的子節點的直接子節點使用child::*/text()或簡單地*/text()

您不必顯式調用text()實際上,上述的XPath可以進一步如下簡化:

//button[@type='submit'][*='OK' or .='OK'] 
+0

謝謝...但是X-Path結果是Element =''....我寧願需要真或假匹配或不匹配... – Fendrix 2014-10-01 14:21:01

+0

恐怕你不能達到使用僅限XPath。您可以執行此XPath,然後使用主機編程語言檢查XPath是否返回任何內容,如果它表示「true」,否則表示「false」 – har07 2014-10-01 14:26:37