首页 > 解决方案 > 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:没有这样的元素:无法定位元素

标签: javaselenium-webdriverui-testingselenide

解决方案


推荐阅读