Selenium:找到元素“旁边”其他元素

时间:2011-11-04 11:30:14

标签: java testing selenium

我正在使用Selenium将Web测试添加到我的项目中。我已经有一堆测试使用以下方法检查特定元素:

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>

如何获取错误消息? 我想要一些东西,允许我在dateElement之后请求类“错误”的span元素。

(这个错误消息是由Spring MVC批准的,因此直接更改它并不容易。可能我猜,但我不想这样做。)

欢迎任何其他想法。

2 个答案:

答案 0 :(得分:23)

好的,我已经找到了使用Xpath和follow-sibling的解决方案,它并不太复杂。

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

这给了我想要的东西,当它不在这里时抛出NoSuchElementException,这正是我想要的。

答案 1 :(得分:6)

elementSelector = "input + span[class='error']";

final WebElement dateElement = web.findElement(By.cssSelector(elementSelector));