当前位置: 首页 > 面试题库 >

selenium:在其他元素旁边找到元素

慎懿轩
2023-03-14
问题内容

我正在使用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合并的,因此直接更改它并不容易。我想可能是这样,但我不希望这样做)。

任何其他想法都欢迎。


问题答案:

好的,我已经找到了使用Xpath和后续兄弟的解决方案,它并不太复杂。

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

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



 类似资料:
  • 我有如下HTML结构: 我使用Selenium,需要通过使用XPath搜索这个唯一值来指向唯一值旁边的td。 我找到了解决方法:找到需要唯一值的tr,然后计算td的前一个兄弟,使用position()=count(前一个兄弟)+2 有更简单的方法吗?问题是表的结构可能会随着时间的变化而变化,但是所需的值总是紧挨着唯一的

  • 硒检测: 目标元素是包含GUID的div: 这是与 DotNet core 2.2 Chrome webdriver 铬74 Ubuntu 18.04 但它肯定存在,并且具有预期的文本,例如,我可以使用不同的xpath表达式手动定位和检查它的文本内容: 原因是在react中创建了div,如下所示: 我认为这大致意味着div有三个textnodes作为子节点(这是有效的吗?)。结果看起来100%正常

  • 在C++中,给定两个值a,b使得a<=b,x等于a或b,如何有效地得到另一个值y(如果a==b,最终等于x)?

  • 我正在尝试以下元素: 以下是Java代码: 它找不到元素。请帮忙。谢谢。

  • 然而,我知道它是失败的前一个命令(如下所示),因为它从来没有点击到这个页面。 失败代码; 也试过;

  • 我正在尝试在Selenium IDE中运行一个记录的测试用例。问题是当我尝试执行整个测试用例时,Selenium会停止它,而不是在页面上找到一个元素。问题是我可以执行测试用例的单个步骤。我认为Selenium会在加载新页面之前尝试找到一个元素,所以我使用了clickAnd等待、暂停和waitForElementPresent命令-什么都不起作用,Selenium会停止测试用例。 调试日志 我将非常