Java RemoteWebDriver - WebElement.findElements (...) не работает точно? - PullRequest
3 голосов
/ 05 сентября 2011

У меня есть сайт для тестирования, и в нем есть этот 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());

Вывод:
Привет, мир
Пока Мир

1 Ответ

2 голосов
/ 06 сентября 2011

Ваш XPath неверен. //td означает «любой элемент в любом месте документа». Попробуйте вместо этого l.findElement(By.xpath("td")).getText() - думаю, вы получите желаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...