硒:查找元素“旁边”的其他元素

2022-09-02 12:28:24

我正在使用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>

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

(此错误消息是由Spring MVC处理的,因此直接更改它并不容易。可能我猜,但我宁愿不要)。

欢迎任何替代想法。


答案 1

好吧,我已经找到了使用Xpath和跟随兄弟姐妹的解决方案,它并不太复杂。

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

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


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

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