【发布时间】:2011-10-24 05:37:44
【问题描述】:
<tbody>
<tr>
<td>January</td>
<td>$100</td>
</tr>
<tr>
<td>February</td>
<td>$80</td>
</tr>
</tbody>
从下面的简单表格可以看出,查找文本等于“January”的表格列很简单:“tr/td[text()='January']” 但是 td 可能会变得复杂,因为它可能包含嵌套元素。所以我们最好再提供一个 By 参数。
我的问题是如何编写一个可以执行此搜索的通用方法。我下面有一个,但不好, findTableRowsBy( 1, By.xpath( "text()='January'" ) ) 会导致异常。有人可以帮我完善这种方法吗?非常感谢。
public List<WebElement> findTableRowsBy( int column, By theBy )
{
By by = By.xpath( "tbody[1]/tr/td[" + column + "]" );
List<WebElement> cols = table.findElements( by );
List<WebElement> rows = new ArrayList<WebElement>();
for( WebElement e : cols )
{
List<WebElement> eles = e.findElements( theBy );
if( eles.isEmpty() )
continue;
if( eles.size() == 1 )
rows.add( eles.get( 0 ) );
}
return rows;
}
【问题讨论】:
-
了解异常的堆栈跟踪可能有助于避免它。
标签: java xpath selenium webdriver