2

我正在研究“添加新用户表单”。在此表单中,有几个必填字段。当任何必填字段为空时,表单将不会提交,并且会显示一条验证消息,例如:“值是必需的,不能为空”。无论字段是否为空,如何检查/自动化表单?

4

3 回答 3

2

方式一:首先编写如下方法:

private boolean isTextPresent(String text){
        try{
            boolean b = driver.getPageSource().contains(text);
            return b;
        }
        catch(Exception e){
            return false;
        }
  }

现在通过调用上述方法来断言页面上是否存在预期的消息:

assertTrue(isTextPresent("Value is required and can't be empty"), "Msg is absent/wrong/misspelled");

方式2:另一种方式如下:

import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.openqa.selenium.*;

private StringBuffer verificationErrors = new StringBuffer();

try {
      assertTrue(driver.findElement(By.cssSelector("BODY")).getText().matches("^[\\s\\S]*Value is required and can't be empty[\\s\\S]*$"));
    } catch (Error e) {
      verificationErrors.append(e.toString());
    }
  }
于 2013-08-27T10:18:29.757 回答
1

您可以使用asserttry-catch 来检查是否出现强制字段警报

try {
  assertEquals("Value is required and can't be empty", driver.findElement(By.xpath("XPATH_OF_LABLE")).getText());
} catch (Error e) {
 //code for the case when the texts are not same
  verificationErrors.append(e.toString());
}

该示例使用 xpath,但您可以为此使用任何其他定位器方法。

于 2013-08-27T08:51:33.733 回答
1

用于SoftAssert通过单个@Test注释验证表单中的所有必填字段。即使任何断言失败,它也会执行下一行,并在最后@Test执行时为我们提供捕获的所有异常assertAll()

driver.findElement(by.id("submit")).click();
SoftAssert softAssert = new SoftAssert();
softAssert.assertEquals(firstname.getText(), "First Name is required");
softAssert.assertEquals(lastname.getText(), "Last Name is required");
softAssert.assertEquals(email.getText(), "Email Address is required");
softAssert.assertAll();
于 2019-11-06T09:42:00.360 回答