在阅读了很多代码示例后,我试图找到<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>
答案 0 :(得分:2)
试试这个xpath表达式:
"//td[" + (columnId + 1) + "]/span[text()='"+ columnValue +"']/ancestor::tr[1]"
答案 1 :(得分:0)
您可以使用firebug获取元素的xPath。
参考这篇文章:
检查此链接是否存在类似问题:
How to get the absolute XPath for an element within Firebug?