2012-06-01 2 views
12

Я тестирую поведение веб-приложений с помощью огурца (используя Selenium и Watir под капотом). Мое веб-приложение имеет страницы HTML5 и использует новый «обязательный» атрибут. Если у меня есть форма ввода данных с обязательным полем, и я отправлю эту форму с пустым полем, я бы хотел убедиться, что веб-приложение правильно отвечает с условием ошибки.Как проверить условия ошибки на страницах HTML5 с огурцом?

К сожалению, при тестировании с использованием веб-браузера HTML5 сообщение об ошибке, которое появляется при неудачной проверке поля, похоже, не доступно для Огурца через веб-драйвер. В любом случае форма не отправляется, и страница остается в форме ввода данных.

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

Во втором случае я могу легко проверить наличие сообщения об ошибке, поскольку это часть HTML-кода, поставляемого на странице. Моя проблема заключается в том, что я не вижу, как написать один тестовый сценарий, который будет проверять условие ошибки для браузеров как безглавых, так и для HTML5.

Возможно, это невозможно в текущем состоянии веб-драйверов Selenium и Watir. Но если кто-нибудь знает, как я могу проверить сообщение об ошибке «требуемое» сообщение HTML5, это будет большой помощью.

EDIT 2012-06-02: Вот пример страница с выборкой предупреждения браузера HTML5 и такой: http://railsdotnext.com/stackoverflow/required.html

Существует обязательный текст и выбрать, текстовое поле, показывая внутренний текст подсказки и текстовое поле с подтверждением ввода регулярного выражения. На странице нет CSS или javascript, чтобы запутать проблему, это просто ванильный HTML5. См. w3schools page about HTML5 field attributes для полной разбивки. Форма отправляется на простой скрипт cgi, который просто перекликается с формой ввода, при условии, что форма успешно завершена. Ошибка отправки останется на странице формы образца.

+0

Есть ли онлайн-пример, в котором используется атрибут 'required', на который мы можем смотреть? – Cheezy

+0

Я создал маленькую. Это не исчерпывающий, но должен обеспечить достаточно, чтобы поиграть. См. EDIT в оригинальном сообщении выше. –

+0

Чем больше я думаю об этом, тестирование ошибки HTML5 не является проблемой - это будет проверка того, работает ли браузер так, как он был разработан. Проблема заключается в проверке проверки сервера, когда HTML написан с формами HTML5. Мне не нужен другой HTML-код в тестовой среде. Было бы лучше, если бы Selenium и/или Watir: Webdriver могли включать/отключать ответы HTML5 так же, как и javascript. –

ответ

0

Я раньше не работал с атрибутом HTML5 required. Но из-за внешнего вида этот атрибут required просто предупреждает браузер о том, что это поле формы должно быть заполнено (т. Е. DOM не изменяется).

Мне кажется, что было бы разумно просто утверждать, что атрибут required присутствует в HTML соответствующих полей формы. Этот тест должен пройти для BOTH-браузеров HTML5 и браузеров, отличных от HTML5.

Попытка утверждать что-либо большее, чем кажется мне, как будто вы проверяете функциональность браузера.

+0

Единственное, что я могу сделать, когда мне нужно проверить элемент вроде: p $ browser.element (: css => " вход:. недействительна ") существует? p $ browser.element (: css => "input: required"). Существует? Если у кого-то есть что-то лучше или как мы можем получить текст всплывающего окна html5 – macwadu

0

За исключением проверки правильности созданного HTML, чтобы включить проверку браузера, я не уверен, сколько вы можете сделать, это не означает проверку браузера, а не вашего кода.

Используя watir или watir-webdriver, вы можете использовать .type для проверки того, что вход имеет правильный тип (например, адрес электронной почты), что является одной вещью, которая контролирует проверку браузера. Другой - наличие требуемого атрибута, который является небольшим трюком. Потенциально .attribute_value («требуется») может работать, но обычно это возвращает значение атрибута, поэтому не уверен, как этот метод будет отвечать на логический атрибут. Другими альтернативами может быть просмотр .attribute_list и

Похоже, что это хорошая причина для Ватира, чтобы добавить .required? метод для ввода элементов, который позволит вам легко проверить, установлен ли этот атрибут.Поэтому я попросил эту функцию https://github.com/watir/watir-webdriver/issues/189

+0

Согласно [Спецификация Webdriver] (http://www.w3.org/TR/webdriver/#reading-attributes-and-properties) boolean атрибут возвращает 'true', если это значение истинно, а' nil', если оно равно false –

Смежные вопросы