Селен: найти элемент «рядом» с другим элементом - PullRequest
14 голосов
/ 04 ноября 2011

Я добавляю веб-тесты в свой проект с использованием Selenium.У меня уже есть куча тестов, которые проверяют определенный элемент, используя:

final WebElement dateElement = web.findElement(By.id(elementId));

И это прекрасно работает.Теперь у меня есть другое требование.Это на моей сгенерированной странице:

<input type="text" id="dateElement" name="dateElement" value="bunch of monkeys" tabindex="101" placeholder="yyyy-mm-dd">
<span class="error">dateElement is an invalid date</span>

Как мне получить сообщение об ошибке?Я хотел бы что-то, что позволяет мне запрашивать элемент span с классом «error» сразу после dateElement.

(Это сообщение об ошибке было создано Spring MVC, поэтому изменить его напрямую непросто.Я думаю, но я бы предпочел не).

Любая альтернативная идея приветствуется.

Ответы [ 2 ]

24 голосов
/ 04 ноября 2011

ОК, я уже нашел решение с использованием Xpath и follow-sibling, оно не было слишком сложным.

final WebElement errorElement = web.findElement(By.xpath("//*[@id='" + elementId + "']/following-sibling::span[@class='error']"));

Это дает мне то, что я хотел, и выдает NoSuchElementException, когда его здесь нетИменно это я и хочу.

6 голосов
/ 04 ноября 2011
elementSelector = "input + span[class='error']";

final WebElement dateElement = web.findElement(By.cssSelector(elementSelector));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...