我可以根据特定的值 Select 一行,然后获取所需的列.

//td[text()='Bachelor']/following-sibling::td[@class='action']

Correctly selects: enter image description here

HTML
enter image description here


I want to select based on negation: Click the Action Button for all students that are NOT of type Master

//td[not(text()='Master')]/following-sibling::td[@class='action'] 

But wrongly selects both (only Student's row should be selected): enter image description here

使用chrome XPath解析器(f12)进行测试,以便稍后在Selenium中使用XPath查询.

在我所做的研究中,找不到任何类似的例子或深入的解释.

推荐答案

原因

//td[not(text()='Master')]/following-sibling::td[@class='action']

"也 Select 主行中的[td个元素]",正如您所观察到的,是不是

//td[not(text()='Master')]

Select 所有td个没有text()节pip 元素且字符串值为'Master'的元素.值得注意的是,这包括了您试图排除的'Master' td之前的所有sibling 姐妹,问题是他们也有后面的td个sibling 姐妹和class="action"个sibling 姐妹.因此,您并不是真正排除要排除的行.

要仅 Select 字符串值为not 'Master'的操作td元素immediately,请使用以下XPath:

//td[@class='action'][preceding-sibling::*[1][self::td][not(.='Master')]]

或者,您可以简单地测试行而不是直接同级:

//tr[not(td='Master')]/td[@class='action']

请注意,前一个XPath将对td定位敏感,而后一个XPath则不会.

另请参见

Html相关问答推荐

HTML::Element endtag为br和IMG生成结束标签>

为什么html复选框总是具有只读属性?

使用Scrapy Select 最后一个子文本

当表头包含特殊字符时,R Quarto发布的HTML表中不必要的大列宽

Chrome和Safari浏览器中的CSS3动画不同

在 bootstrap 中的弹性项之间添加连接行

根据屏幕大小拆分长行列表

我希望创建一个对角手风琴与不同的内容(文本和图像)在其正常状态和其他元素悬停

如何创建剪切到路径的循环文本字幕?

角化、剪裁、边缘,但仅在底部2和平滑包装上

SVG的动态CSS

我如何确保我的网格永远不会小于它的子网格

根据Tailwind CSS中的子计数而非子宽度进行对齐,并水平对齐

多次使用组件时计数Angular 14中嵌套数组的指令

即使必填字段为空,HTML 表单也已成功提交

如何使用 CSS 应用带有笔划的文本阴影?

如何使用 :before 在 CSS 中为列表增加计数器

在一行中对齐两个不同形式的按钮

样式不适用于来自 tailwindcss 的网络

是否有一种静态方式可以根据暗模式 Select 一张或另一张图像?