如何用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)));
我不知道如何检查元素是否有 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)));