У меня есть сайт для тестирования, и в нем есть этот HTML-код:
<table id="tableid">
<tbody>
<tr class="first">
<td>Hello World</td>
</tr>
<tr class="second">
<td>Bye World</td>
</tr>
</tbody>
</table>
Итак, я хочу создать список тегов tr и перебрать их с помощью следующего кода:
List<WebElement> list = driver.findElements(By.xpath("//table[@id='tableid']/tbody/tr"));
for(WebElement l : list){
System.out.println(l.getAttribute("class"));
System.out.println(l.getLocation());
System.out.println(l.hashCode());
System.out.println(l.findElement(By.xpath("//td")).getText());
}
Эти четыре System.out.println следующие:
первый
(32, 300)
1573
Hello World
второй
(64, 600)
1574
Hello World
Так что расположение другое, даже атрибуты класса разные. Но метод getText возвращает только текст из первого элемента. Зачем? Я что-то пропустил? Делать что-то не так? Я не могу понять это.
EDIT / UPDATE:
Это кажется странным. Приведенный выше код не работает. Если я сделаю следующий код, он работает нормально. Есть объяснения?
List<WebElement> list = driver.findElements(By.xpath("//table[@id='tableid']/tbody/tr/td"));
System.out.println(list.get(0).getText());
System.out.println(list.get(1).getText());
Вывод:
Привет, мир
Пока Мир