XPath:: получить следующий брат


У меня есть следующая структура HTML: я пытаюсь построить надежный метод для извлечения второго элемента color digest, так как в 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 "Color Digest", который имеет декодированное значение.

Я написал следующий xpath, но вместо того, чтобы получить второй я не получаю второй элемент td.

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

и когда я меняю его на td[2] на td[1], я получаю оба элементы.

3 53

3 ответа:

вы должны искать второй tr, который имеет td, который равен "Цветному Дайджесту", тогда вам нужно посмотреть либо на следующий брат первого td в tr, либо на второй 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

вы можете пойти для идентификации списка элементов с xPath:

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

это даст вам список из двух элементов, чем вы можете использовать 2-й элемент вашего предполагаемого одного. Например:

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

теперь вы можете использовать 2-й элемент в качестве предполагаемого элемента, который является элементы.get (1)

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

в Chrome (возможно Safari тоже) вы можете проверить элемент, а затем щелкните правой кнопкой мыши на теге, который вы хотите получить xpath для, то вы можете скопировать xpath, чтобы выбрать этот элемент.