关于javascript:HTML xpath选择父元素的先前同级

HTML xpath selecting preceding sibling of parent element

以下是我正在处理的应用程序的html:

1
2
3
4
5
6
<td class="ui-selection-column" ng-reflect-ng-class="[object Object]" ng-reflect-ng-style="[object Object]" style="width: 38px; display: table-cell;">

<td ng-reflect-ng-class="[object Object]" style="display: table-cell;">
    <span class="ui-column-title">NAME</span>
    <span class="ui-cell-data">Name1</span>
</td>

我能够编写xpath以选择text()= Name1的td元素内的跨度。

1
//td[@style='display: table-cell;']/span[text()='Name1']

现在,如何在上下文中与较低的td元素一起选择上方的第一个td元素。 我在Xpath下方写了一个代码,以选择td元素的上一个兄弟,但无法正常工作。

1
//td[@style='display: table-cell;']/span[text()='VendorContact_Name1']/preceding-sibling::td[@class='ui-selection-column']

我错过了什么吗? 有什么建议么?


这是根据您的第一个xpath:

1
//td[@style='display: table-cell;']/span[text()='Name1']/../preceding-sibling::td[@class='ui-selection-column'][1]

因为在您的xpath中,您选择的是span节点,而不是td,因此,如果要选择包含spantd,它将类似于:

1
//td[@style='display: table-cell;' and span[text()='Name1']]/preceding-sibling::td[@class='ui-selection-column'][1]