如何用Selenide检测元素是否为2位?

How to use Selenide to check the element is 2 digits?

我不知道如何检查元素是否有 2 个数字,在这种情况下,答案是 19.979999999 作为否定测试。

final String HOST = "https://mainortest1.azurewebsites.net/shopping";

@Test
public void totalDecimalIs2() {
    $("#quantity1.product_count_1").setValue("2");
    $("#add1.add").click();
    $("#total_amount").shouldBe(visible);
    //↓Here I am not sure how to check is this total_amount is 2 digits or not, like XXX.YY
    $("#total_amount").shouldHave(???);
}

我猜你的意思是小数点后两位。

尝试以下方法

一次性解决方案:

assertTrue($("#total_amount").getText().matches("\d*\.\d{2}"));

可重复使用的解决方案:

 public static Condition elementHasExactlyNumberOfDecimalDigits(final int digits) {
    return new Condition("elementHasExactlyNumberOfDecimalDigits") {
        @Override
        public boolean apply(Driver driver, WebElement webElement) {
            String text = webElement.getText();
            if (text == null || text.isEmpty()) {
                return false;
            }
            return text.matches("\d*\.\d{" + digits + "}");
        }
    };
}

//then anywhere
assertTrue($("#total_amount").has(elementHasExactlyNumberOfDecimalDigits(2)));