我试图重复使用下面的<table>
找到的WebElement来搜索它的后代和直接后代:
<html>
...
<table id="tbl">
<tbody>
<tr>
<td>
<div>foo</div>
</td>
</tr>
...
<tr><td><button class="btnDefault"/></td></tr>
</tbody>
</table>
...
</html>
这个表格可能包含嵌套的表格,也可能没有,我不想浏览整个表格,我更愿意使用保证可以实现我的目标的更具体的选择器。而且我需要的一些元素没有合理的ID,我希望使用以下选择器来查找它们:
#tbl1 > tbody > tr:first-child > td:first-child > div
#tbl1 > tbody > tr > td > button.btnDefault
为了让代码更简洁,可能也更快,我想缓存
<table>
元素。var table = driver.FindElement(By.Id("tbl"));
var div = table.FindElement(By.CssSelector("> tbody > tr:first-child > td:first-child > div"));
var button = table.FindElement(By.CssSelector("> tbody > tr > td > button.btnDefault"));
第二个和第三个查询中,这将被视为无效的CSS选择器。这是正确的,但标准的CSS语法并不适用于从特定范围进行搜索。是否有某种构造可以在此处用作查询的根?