<tbody>
<tr>
<td>January</td>
<td>$100</td>
</tr>
<tr>
<td>February</td>
<td>$80</td>
</tr>
</tbody>
Как видно из простой таблицы, найти столбец таблицы с текстом, равным «Январь», просто: «tr / td [text () = 'Январь']»
Но тд может быть сложным, так как может содержать вложенные элементы. Поэтому нам лучше предоставить другой параметр 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;
}