Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java检查SeleniumWebDriver中的必填字段是否为空?_Java_Eclipse_Selenium Webdriver_Junit4_Assertion - Fatal编程技术网

如何使用Java检查SeleniumWebDriver中的必填字段是否为空?

如何使用Java检查SeleniumWebDriver中的必填字段是否为空?,java,eclipse,selenium-webdriver,junit4,assertion,Java,Eclipse,Selenium Webdriver,Junit4,Assertion,我正在研究“添加新用户表单”。在此表单中,有几个必填字段。当任何必填字段为空时,将不提交表单,并显示一条验证消息,如:“值为必填项,不能为空”。我如何检查/自动执行表单字段是否为空?您可以使用try-catch使用assert检查强制字段警报是否出现 try { assertEquals("Value is required and can't be empty", driver.findElement(By.xpath("XPATH_OF_LABLE")).getText()); } ca

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

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

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,但您可以使用任何其他定位器方法进行此操作。

方式1: 首先,编写以下方法:

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());
    }
  }

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

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();

第二个更合适,但最后我用了第二个。@NasrinNaher:祝你好运