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 ответа:
вы должны искать второй 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)