Как проверить, является ли обязательное поле пустым в Selenium WebDriver с помощью Java?

Я работаю над «добавлением новой формы пользователя». В этой форме есть несколько обязательных полей. Форма не будет отправлена, если какое-либо обязательное поле будет пустым, и будет отображаться сообщение проверки, например: «Значение является обязательным и не может быть пустым». Как я могу проверить / автоматизировать форму, является ли поле пустым или нет?


person Nasrin Naher    schedule 27.08.2013    source источник


Ответы (3)


Способ 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());
    }
  }
person Ripon Al Wasim    schedule 27.08.2013
comment
2-й предпочтительнее - person Ripon Al Wasim; 27.08.2013
comment
Но в итоге я использовал второй. - person Nasrin Naher; 27.08.2013
comment
@NasrinNaher: Удачи - person Ripon Al Wasim; 27.08.2013

Вы можете использовать assert для проверки того, появляется ли предупреждение обязательного поля, с помощью try-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, но для этого можно использовать любой другой метод локатора.

person Sankumarsingh    schedule 27.08.2013

Используйте 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();
person Thangalakshmi    schedule 06.11.2019