如何通过Xpath查询Selenium中的HTML元素?

时间:2015-08-28 11:59:10

标签: java html selenium xpath

在阅读了很多代码示例后,我试图找到<tr>元素,其中后代<span>元素的内容与参数columnValue匹配,我只想在列中搜索使用columnId中给出的索引。我用Java中的Selenium尝试了类似的东西,但我总是得到InvalidSelectorException: Xpath expression cannot be evaluated。我在这个Xpath表达式中单独测试了两个条件,它们没有任何问题。但是当我在一个XPath表达式中将它们与and运算符组合在一起时,抛出了异常。

这是我的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 个答案:

答案 0 :(得分:2)

试试这个xpath表达式:

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

答案 1 :(得分:0)

您可以使用firebug获取元素的xPath。

参考这篇文章:

  

http://www.wikihow.com/Find-XPath-Using-Firebug

检查此链接是否存在类似问题:

  

How to get the absolute XPath for an element within Firebug?