You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

动态数据集场景下,如何通过表格第一列文本获取对应第二列文本?

解决动态表格中通过费用类型获取对应金额的问题

嘿,我完全懂你遇到的痛点!动态数据集里固定行号的XPath根本靠不住,行的位置随时会变。不过咱们可以换个思路——通过费用类型的文本直接定位目标行,再提取对应的金额列,这就稳了!

下面给你几个实用的解决方案:

方法1:使用following-sibling定位相邻列

这个方法先找到包含目标费用类型的单元格,再直接取它的下一个兄弟单元格(也就是金额列):

//td[text()='Book Fee']/following-sibling::td[1]

对应的Java代码示例:

String bookFeeAmount = driver.findElement(By.xpath("//td[text()='Book Fee']/following-sibling::td[1]")).getText();

方法2:先定位目标行再取金额列

先找到包含目标费用类型的整行,再提取该行的第二列,逻辑更清晰:

//tr[td[text()='Book Fee']]/td[2]

代码写法:

String bookFeeAmount = driver.findElement(By.xpath("//tr[td[text()='Book Fee']]/td[2]")).getText();

处理文本空格/格式问题

如果费用类型文本前后有空格、换行,直接用text()匹配会失败,这时候可以用normalize-space()来清理文本:

//td[normalize-space(text())='Book Fee']/following-sibling::td[1]

它会自动去掉文本首尾的空格和换行符,匹配更准确。

限定表格范围(避免全局匹配)

如果页面有多个表格,最好加上表格的ID或其他属性来缩小范围,比如你提供的表格ID是charges,可以这么写:

//*[@id='charges']/table[2]/tbody/tr/td[text()='Book Fee']/following-sibling::td[1]

这样就只会在你目标的表格里查找,不会匹配到其他表格的内容。

模糊匹配(应对动态文本)

如果费用类型文本有部分动态内容(比如带编号),可以用contains()做模糊匹配:

//td[contains(text(),'Book Fee')]/following-sibling::td[1]

不过要注意,这个方法可能会匹配到相似的文本,所以尽量确保关键词足够独特。

内容的提问来源于stack exchange,提问作者Maham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:55:21