Как найти заполнитель с двумя состояниями: clear и class = "error" - PullRequest
1 голос
/ 18 июня 2019

Я тестирую форму ContactUs.И есть 2 состояния для заполнителей в полях.Первое состояние - когда ничего не заполнено.

<label for="edit-submitted-name">Name </label>

Второе состояние - когда отправка формы с ошибкой проверки.

<label for="edit-submitted-name" class="error">Name </label>

Я хочу проверить, что после отправки class = "error"появляется или нет.

Вот как я пытался это сделать:

if (driver.getPageSource().contains("error")) {
        System.out.println("Validation down");
    } else {
        System.out.println("Validation okay");
}

Ответы [ 3 ]

2 голосов
/ 18 июня 2019

Вы можете получить несколько экземпляров строк error в исходной странице, лучше явно идентифицировать уникальный элемент, чтобы не было ложных положительных совпадений.

Вот как это можно сделать с помощью локаторов XPath:

  1. Метка, где ничего не заполнено:

    //label[@for='edit-submitted-name' and not(@class='error')]
    

    enter image description here

  2. Метка с ошибкой проверки:

    //label[@for='edit-submitted-name' and @class='error']
    

    enter image description here

Пример кода Java, который проверяет наличие ошибки проверки:

if (driver.findElements(By.xpath("//label[@for='edit-submitted-name' @class='error']")).size() > 0) {
    System.out.println("Validation error is present.");
}

Дополнительная информация:

1 голос
/ 18 июня 2019

Это может быть достигнуто с помощью простого селектора CSS, см. Ниже

Нормальное состояние

label[for='edit-submitted-name']

Состояние ошибки

 

   label[for='edit-submitted-name'].error
1 голос
/ 18 июня 2019

Чтобы проверить, присутствует ли class="error" или нет, вы можете использовать следующее решение:

  • Использование cssSelector:

    try {
        driver.findElement(By.cssSelector("label[for='edit-submitted-name']:not(.error)"))
        System.out.println("Validation okay");
    }
    catch (NoSuchElementException e) {
        System.out.println("Validation down");
    }
    
  • Использование xpath:

    try {
        driver.findElement(By.xpath("//label[@for='edit-submitted-name' and not(@class='error')]"))
        System.out.println("Validation okay");
    }
    catch (NoSuchElementException e) {
        System.out.println("Validation down");
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...