2015-08-28 282 views
2

在閱讀了很多代碼示例之後,我試圖找到<tr>元素,其中後代<span>元素的內容與參數columnValue相匹配,我只想在列中使用columnId中給出的索引進行搜索。我在Java中使用Selenium嘗試過類似的東西,但我總是得到一個InvalidSelectorException: Xpath expression cannot be evaluated。我在這個Xpath表達式中分別測試了兩個條件,並且它們沒有任何問題。但是,當我在一個XPath表達式中將它們與and運算符結合使用時,將拋出異常。如何通過Xpath在Selenium中查詢HTML元素?

這是我的Java代碼:

public WebElement getRow(final String columnId, final String columnValue) { 
     final List<WebElement> eleList = 
      getElement().findElements(
        By.xpath("tbody/tr[td/span/text()='" + columnValue + "' and ./td/position()=" + (columnId + 1)"]")); 
     return null; 
} 

這是相應的HTML代碼:

<tbody> 
 
    <tr class="even"> 
 
    <td> 
 
     <span>Regionalmarkt Nord</span> 
 
    </td> 
 
    <td> 
 
     <span>777</span> 
 
    </td> 
 
    <td> 
 
     <span id="links">   
 
     <a name="delete_button" href="#" > <img title="Delete" src="/path/..."/></a> 
 
     <a id="edit_button" href="#"> <img title="Edit" src="/path/..."/></a> 
 
     </span> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    ... 
 
    </tr> 
 
</tbody>

回答

2

試試這個XPath表達式:

"//td[" + (columnId + 1) + "]/span[text()='"+ columnValue +"']/ancestor::tr[1]" 
+0

很高興能有幫助! – drkthng

相關問題