ChatGPT解决这个技术问题 Extra ChatGPT

XPath:: 获取以下同级

我有以下 HTML 结构:我正在尝试构建一个强大的方法来提取第二个颜色摘要元素,因为 DOM 中会有很多这样的标签。

<table>
  <tbody>
    <tr bgcolor="#AAAAAA">
    <tr>
    <tr>
    <tr>
    <tr>
      <td>Color Digest </td>
      <td>AgArAQICGQMVBBwTIRQHIwg0GUMURAZTBWQJcwV0AoEDAQ </td>
    </tr>
    <tr>
      <td>Color Digest </td>
      <td>2,43,2,25,21,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, </td>
    </tr>
  </tbody>
</table>

我正在尝试提取具有解码值的第二个“颜色摘要”td 元素。

我编写了以下 xpath,但没有得到第二个,我没有得到第二个 td 元素。

//td[text() = ' Color Digest ']/following-sibling::td[2]

当我将它更改为 td[2] 到 td[1] 时,我得到了这两个元素。


m
mlissner

您应该寻找 td 等于“Color Digest”的第二个 tr,然后您需要查看 tr 中第一个 td 的以下同级或第二个 td。

尝试以下操作:

//tr[td='Color Digest'][2]/td/following-sibling::td[1]

或者

//tr[td='Color Digest'][2]/td[2]

http://www.xpathtester.com/saved/76bb0bca-1896-43b7-8312-54f924a98a89


我在 Firefox 上使用 Xpath Checker
也许 xpath 检查器不起作用?我从未使用过它,也没有安装 Firefox。当第一个 td 元素具有“颜色摘要”时,我拥有的 xpath 应该只返回第二个 td 元素
如果您检查我的 HTML,有一个空格“颜色摘要”我尝试了您发送的链接,您可以看到两个 TD 都被返回。
啊,我明白了,我要改变我的回答。对不起。您应该寻找 td 等于“Color Digest”的第二个 tr,然后您需要查看 tr 中第一个 td 的以下同级或第二个 td。
D
Dhaval Jethava

您可以使用 xPath 识别元素列表:

//td[text() = ' Color Digest ']/following-sibling::td[1]

这将为您提供两个元素的列表,而不是您可以将第二个元素用作您想要的元素。例如:

List<WebElement> elements = driver.findElements(By.xpath("//td[text() = ' Color Digest ']/following-sibling::td[1]"))

现在,您可以使用第二个元素作为您想要的元素,即 elements.get(1)


F
FarFigNewton

/html/body/table/tbody/tr[9]/td[1]

在 Chrome(也可能是 Safari)中,您可以检查一个元素,然后右键单击要为其获取 xpath 的标签,然后您可以复制 xpath 以选择该元素。


是的,我知道这个功能有这些元素的重复,而不是仅仅为了一个我想建立一个健壮的方法。

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅