如何从 WebElement Table 获取所有直接(直接)行

How to get all direct(immediate) rows from WebElement Table

从下面 table 我需要使用 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 中。我带着 Table WebElement。

使用下面的定位器

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();
}

您可以使用 xpath 联合运算符 (|) 组合多个 xpath 表达式,f.e 一个处理 tbody 存在的情况,另一个处理 tbody 不存在:

//table[@id='Main']/tbody/tr | //table[@id='Main']/tr