У меня следующая структура 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-элемент «Color Digest», который имеет декодированное значение.
Я написал следующий xpath, но вместо второго я не получаю второй элемент td.
//td[text() = ' Color Digest ']/following-sibling::td[2]
И когда я меняю его с td [2] на td [1], я получаю оба элемента.
Вы можете определить список элементов с помощью xPath:
Это даст вам список из двух элементов, после чего вы сможете использовать второй элемент в качестве предполагаемого. Например:
List<WebElement> elements = driver.findElements(By.xpath("//td[text() = ' Color Digest ']/following-sibling::td[1]"))
Теперь вы можете использовать второй элемент в качестве предполагаемого элемента, которым является elements.get (1)
источник
/html/body/table/tbody/tr[9]/td[1]
В Chrome (возможно, и в Safari) вы можете проверить элемент, затем щелкнуть правой кнопкой мыши по тегу, для которого вы хотите получить xpath, затем вы можете скопировать xpath, чтобы выбрать этот элемент.
источник