从下表中我需要使用Xpath或“css-selector”或Selenium API的直接行元素: - element.findelements。请帮忙。
<table id ="Main">
<tbody>
<tr id="row_1">
<tr id="row_1_1">
<tr id="row_1_1_1">
</tr>
</tr>
</tr>
<tr id="row_2">
</tr>
<tr id="row_3">
<tr id="row_3_1">
</tr>
</tr>
</tbody>
</table>
预期产出: -
[<tr id="row_1">,<tr id="row_2">,<tr id="row_3">]
Imp注意: - 我正在寻找通用的解决方案。有时tbody不会出现在桌子上。我正在和我一起使用Table WebElement。
答案 0 :(得分:2)
您可以使用xpath union运算符(|
)来组合多个xpath表达式,其中一个用于处理tbody
存在时的情况,另一个用于处理tbody
没有&#39的情况; t存在:
//table[@id='Main']/tbody/tr | //table[@id='Main']/tr
答案 1 :(得分:0)
使用以下定位器
By.cssSelector("table#Main > tbody > tr")
Or
By.xpath("//table[@id='Main']/tbody/tr")
List<WebElement> allRows = driver.findElements(By.cssSelector("table#Main > tbody > tr"));
for(WebElement ele : allRows) {
//do your operation with that row
//ele.getText();
}