java - Selenide waitUntil(condition, timeout).isDisplayed() 抛出错误而不是返回布尔值
问题描述
我在使用 Selenide waitUntil 和条件方法 isDisplayed() 控制测试流程时遇到问题。我需要我的条件来检查元素是否存在和可见以及是否返回 false;如果不是,那么我们继续检查下一个给定元素是否启用,并基于此我们返回 false 或继续该方法。
我有这个条件
if (Actions.waitUntilAppears(AWAITING_PAYMENT_DIV, 5_000) &&
!Actions.waitUntilEnabled(PAY_WITH_CARD_BTN, 60_000)) {
return false;
}
动作方法是
public static boolean waitUntilAppears(By locator, long timeForWait) {
return $(locator).waitUntil(Condition.appear, timeForWait).isDisplayed();
}
public static boolean waitUntilEnabled(By locator, long timeForWait) {
return $(locator).waitUntil(Condition.enabled, timeForWait).isEnabled();
}
但是,我在第一个条件下遇到硒化物“断言”错误,例如在可见性检查中。它抛出
Element not found {By.xpath: //div[text()='element text']}
Expected: visible
当下一个条件完全正常工作时,它返回一个布尔值,我用它来控制另一个方法中的 while 循环。我也无法捕获异常,因为它在硒化物“断言”中从技术上“捕获”,异常原因是:NoSuchElementException:没有这样的元素:无法定位元素
解决方案
推荐阅读
- javascript - React Router 在重定向到具有不同 slug 的同一页面时触发重新加载/重新安装组件
- c# - How to use a class in an if statement
- django - 如何将数据插入到一个模型的字段中,该模型是 OnetoOneField 与另一个模型映射的
- git - 在 Ember 中加载的 Ghost URL
- api - 如何使用 Pinterest V1 API 端点在 Pinterest 中搜索查询?
- java - 如何在 Hibernate 中使用 session.merge?
- mysql - SQL TRIGGER:一次将已删除的行插入表中,而不将每一列都列为 INSERT 值
- react-native-maps - 如何在 react-native-maps 中搜索地点?
- java - 我可以在线程内强制中断吗?
- jquery - 显示后在主 div 上强制 window.scroll()