XPath ::获得关注的兄弟姐妹


82

我有以下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>

我正在尝试提取具有解码值的第二个“ Color Digest” td元素。

我写了下面的xpath,但是没有得到第二个,我没有得到第二个td元素。

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

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

Answers:


120

您应该寻找第二个tr,其td等于“ Color Digest”,然后您需要查看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
add-semi-colons


1
也许XPath检查器不起作用?我从未使用过它,也没有安装Firefox。当第一个td元素具有“颜色摘要”时,我拥有的xpath应该仅返回第二个td元素
james31rock

如果您检查我的HTML,则出现空格“ Color Digest”,我尝试了发送的链接,您可以看到两个TD都已返回。
加分号2012年

1
啊,我明白了,我将改变自己的回答。抱歉。您应该寻找第二个tr,其td等于“ Color Digest”,然后您需要查看tr中第一个td的以下同级或第二个td。
james31rock

5

您可以使用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)


2

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

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


2
是的,我知道功能是这些元素的重复,而不仅仅是我想要建立一种可靠的方法。
加分号2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.