Как проверить условия ошибки на страницах HTML5 с огурцом?
Я тестирую поведение веб-приложений с помощью Cucumber (используя Selenium и Watir под капотом). Мое веб-приложение имеет HTML5-страницы и использует новый атрибут "required". Если у меня есть форма ввода данных с обязательным полем, и я отправляю эту форму с пустым полем, я хотел бы убедиться, что веб-приложение правильно отвечает с ошибкой.
К сожалению, при тестировании с использованием веб-браузера HTML5 сообщение об ошибке, которое появляется при неудачной проверке поля, кажется, не доступно для Cucumber через веб-драйвер. В любом случае, форма не отправляется, и страница остается в форме ввода данных.
С другой стороны, при тестировании в автономном режиме или в браузере, не поддерживающем HTML5, форма может отправляться, что позволяет моему веб-приложению перехватить ошибку и отправить пользователя обратно на страницу формы с сообщением об ошибке.
Во втором случае я легко могу проверить наличие сообщения об ошибке, поскольку оно является частью HTML-кода, представленного на странице. Моя проблема в том, что я не могу понять, как написать один тестовый сценарий, который проверит состояние ошибки как в ситуациях без браузера, так и в браузере HTML5.
Возможно, это невозможно при текущем состоянии веб-драйверов Selenium и Watir. Но если у кого-то есть идеи, как я могу проверить всплывающее сообщение об "требуемой" ошибке HTML5, это очень поможет.
ОБНОВЛЕНИЕ 2012-06-02:
Вот пример страницы sample page с выборкой предупреждений браузера HTML5.
Есть обязательный текст и выберите, текстовое поле, показывающее внутренний текст подсказки, и текстовое поле с проверкой ввода регулярных выражений. На странице нет ни CSS, ни javascript, чтобы запутать проблему, это просто ванильный HTML5. См. страницу w3schools об атрибутах полей HTML5 для полной разбивки. Форма отправляется в простой CGI-скрипт, который просто повторяет ввод формы, предполагая, что форма выполнена успешно. Ошибка отправки останется на странице примера формы.
Ответы
Ответ 1
Я раньше не работал с атрибутом HTML5 required
. Но из-за внешнего вида этот атрибут required
просто предупреждает браузер о том, что это поле формы должно быть заполнено (т.е. DOM не изменяется).
Мне кажется, что было бы разумно просто утверждать, что этот атрибут required
присутствует в HTML соответствующих полей формы. Этот тест должен пройти для BOTH-браузеров HTML5 и браузеров, отличных от HTML5.
Попытка утверждать что-то большее, чем кажется мне, как будто вы тестируете функциональность браузера.
Ответ 2
Помимо проверки правильности созданного HTML, чтобы включить проверку браузера, я не уверен, сколько вы можете сделать, это не означает проверку браузера, а не вашего кода.
Используя watir или watir-webdriver, вы можете использовать .type для проверки того, что вход имеет правильный тип (например, адрес электронной почты), который является одним из элементов управления проверкой браузера. Другой - наличие требуемого атрибута, который является небольшим трюком. Потенциально .attribute_value ( "требуется" ) может работать, но обычно это возвращает значение атрибута, поэтому не уверен, как этот метод будет отвечать на логический атрибут. Другими альтернативами может быть просмотр .attribute_list и
Похоже, что это хорошая причина для Ватира, чтобы добавить .required? метод для ввода элементов, который позволит вам легко проверить, установлен ли этот атрибут. Поэтому я попросил эту функцию https://github.com/watir/watir-webdriver/issues/189
Ответ 3
У вас должны быть CSS-селекторы для нацеливания на конкретное поле и поиска идентификатора ошибки. Если это видно или нет. Детальное определение шага должно быть там.
Ответ 4
Одним из решений было бы не использовать Cucumber для проверки поведения ошибки, а вместо этого проверить, что вы настроили поля.
Так что в терминах Кьюка у вас может быть что-то вроде
Given I am filling in my form
Then I should see that my name is required
а затем напишите что-нибудь, что ищет нужную опцию в теге html для поля имени.
Больше чем это тестирует браузер, а не ваше приложение.