我需要访问看起来像表格的东西的第一个单元格(但有点奇怪 - 第一列的 DIV 在结构上“高于”同一行的其余单元格)。
<div class="slick-viewport slick-viewport-top slick-viewport-left" tabindex="0" hidefocus="" style="overflow: auto; width: 100%; height: 513px;">
<div class="grid-canvas grid-canvas-top grid-canvas-left" tabindex="0" hidefocus="" style="height: 825px; width: 1336px;" unselectable="on">
<div class="ui-widget-content slick-row even lastClicked selected" role="row" row="0" style="top:0px;">
<div class="slick-cell l0 r0 uppercase selected" aria-describedby="inforDataGrid160360C1" tabindex="-1" role="gridcell"><span style="float: left;display:inline-block;height:1px;width:0px"></span><button type="button" class="tree-expand inforIconButton closed"><span></span></button><span>ABC</span></div>
<div class="slick-cell l1 r1 uppercase selected" aria-describedby="inforDataGrid160360C2" tabindex="-1" role="gridcell">DEF</div>
<div class="slick-cell l2 r2 uppercase selected" aria-describedby="inforDataGrid160360C3" tabindex="-1" role="gridcell">GHI</div>
</div>
<div class="ui-widget-content slick-row odd" role="row" row="1" style="top:25px;">
<div class="slick-cell l0 r0 uppercase" aria-describedby="inforDataGrid160360C1" tabindex="-1" role="gridcell"><span style="float: left;display:inline-block;height:1px;width:0px"></span><button type="button" class="tree-expand inforIconButton closed"><span></span></button><span>JKL</span></div>
我正在寻找指出 ABC 的有用信息。可以看到上面的 div 具有 row="0"
属性,使用起来似乎很合理。带有 ABC 的 div 有类 l0 r0
这似乎也很有用(但有点违反直觉的是同一行的下一个单元格的类 - 包含 DEF - 不是 l0 r1
或 l1 r0
或类似的东西,而不是 l1 r1
)。
另外,许多 DIV 级别上面有一个 id="contentBody"
,我想包含它。
所以类似于 //contentBody/*/row="0"/class="l0 r0"
。
我如何构造这个 XPath?
(DEF 是第一行的第二个单元格/列,GHI 是第一行的第三个单元格/列。JKL 是第二行的第一个单元格/列。我包含这个是为了让您了解这个表是如何构建的)。
最佳答案
这个应该返回所需的div
:
//div[@id="contentBody"]//div[@row="0"]/div[contains(@class, "l0") and contains(@class, "r0")]
在 CSS-selector 中相同:
div#contentBody div[row="0"]>div.l0.r0
您可以使用 selectors cheat-sheet用于创建 XPath/CSS 选择器以及 tutorial , documentation深入了解
关于html - 找出在 Robot Framework 中有用的 XPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53617040/