2015-08-28 283 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

相关问题