Как проверить, была ли проверка HTML5 запущена с использованием селена? - PullRequest
15 голосов
/ 07 февраля 2012

При тестировании моего веб-приложения с использованием Selenium. Вся проверка формы в веб-приложении выполняется с использованием проверки формы HTML5. Можно ли утверждать, что проверка формы / ввода была инициирована с помощью Selenium?

Ответы [ 4 ]

17 голосов
/ 02 мая 2012

Подобный поиск помогает в браузерах, поддерживающих HTML5 (с использованием Java и WebDriver, но его также можно использовать в любом другом месте):

// looks for an element that has been marked as required on a submit attempt
WebElement elem1 = driver.findElement(By.cssSelector("input:required"));
// looks for an element that has been marked as invalid on a submit attempt
WebElement elem2 = driver.findElement(By.cssSelector("input:invalid"));

Доступны следующие псевдоклассы CSS:

2 голосов
/ 27 августа 2018

Атрибут validationMessage вернет сообщение, которое будет отображаться при сбое проверки:

WebElement username = driver.findElement(By.id("username"));    
String validationMessage = username.getAttribute("validationMessage");

Если элемент имеет атрибут required, браузер отобразит сообщение после отправки формы:

boolean required = Boolean.parseBoolean(username.getAttribute("required"));

Вы можете проверить, является ли введенное значение действительным:

boolean valid = (Boolean)((JavascriptExecutor)driver).executeScript("return arguments[0].validity.valid;", username);


Не : текст сообщения и проверка могут быть настроены.Если вы хотите проверить настраиваемую проверку и сообщение.

Здесь тестируемый код для настраиваемой проверки (Java, TestNG):

Assert.assertTrue(Boolean.parseBoolean(username.getAttribute("required")), "Username is required and message should be showin");
Assert.assertEquals(username.getAttribute("validationMessage"), "My custom message", "Message text control");

username.sendKeys("@vasy a^");
Assert.assertTrue((Boolean)((JavascriptExecutor)driver).executeScript("return arguments[0].validity.valid;", username), "Username should not contain not special characters");
2 голосов
/ 21 апреля 2016

Тестирование на наличие атрибутов HTML5, которые отвечают за проверку, достаточно адекватно.На самом деле запуск проверки правильности в браузере - это не тестирование вашей работы (а тестирование самого браузера), что может быть неплохо, но, на мой взгляд, не нужно.

Однако абсолютно необходимо то, чтоу вас есть и проверяйте свою валидацию, которая у вас есть, когда проверка HTML5 недоступна (или обойдена).

Первая проблема заключается в том, что проверка HTML5 имеет приоритет и не позволяет вам проверить свою собственную проверку.Так как же подойти к этому?

Проверить наличие атрибутов проверки HTML5

Чтобы проверить, что он использовался, используйте assertAttribute:

<tr>
    <td>assertAttribute</td>
    <td>id=myFieldId@required</td>
    <td></td>
</tr>

Если вы используетеСинтаксис XML required="required", вам нужно будет подтвердить, что значение является «обязательным»:

<tr>
    <td>assertAttribute</td>
    <td>id=myFieldId@required</td>
    <td>required</td>
</tr>

Проверка резервной проверки

JavaScript

Если проверка HTML5 препятствует вашей проверкеПроверка JavaScript от возврата ошибок. После того, как вы подтвердили наличие атрибутов проверки HMTL5, вы можете удалить атрибуты проверки HTML5, чтобы проверить запасную проверку JavaScript:

<tr>
    <td>runScript</td>
    <td>document.getElementById('myFieldId').removeAttribute('required')</td>
    <td></td>
</tr>

Теперь вы можете проверить проверку JavaScript.Чтобы удалить проверку электронной почты, вам нужно установить для атрибута type поля значение text:

<tr>
    <td>runScript</td>
    <td>document.getElementById('myFieldId').setAttribute('type','text')</td>
    <td></td>
</tr>

Проверка проверки на стороне сервера

Даже при использовании проверки HTML5 и проверки JavaScript, если вы отправляете на сервер, вам нужно будет проверить, что ваш сервер также проверяет эти поля.

Вызов функции submit() формы отправит форму без вызова проверки.Команда Selenium submit делает то же самое:

<tr>
    <td>submit</td>
    <td>name=myFormName</td>
    <td></td>
</tr>

Дождавшись загрузки следующей страницы, вы можете проверить наличие ожидаемых ошибок.

0 голосов
/ 24 февраля 2016

В дополнение к ответу @Slanec: добавьте также следующую строку (используя C #, но она должна быть такой же в Java или других языках):

Assert.IsTrue(true,"<The error message which appears>",elem1);

Это на тот случай, если вы хотитепроверьте, является ли сообщение видимым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...