2013-11-22 6 views
11

Одно из требований, которые я пытаюсь создать определениями шагов, состоит в том, что каждый элемент должен быть пронумерован. Есть ли API для проверки того, имеет ли элемент правильный CSS-контент?Тестирование счетчиков CSS с использованием огурца/селена

Мы используем Selenium, Cucumber & Capybara для тестирования нашего приложения.

CSS-что мы хотели бы, чтобы автоматически проверить:

ul { 
    counter-reset: steps; 
} 

li:before { 
    content: counter(steps) "."; 
    counter-increment: steps; 
} 

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

Edit: Просто чтобы прояснить, я думаю, что это потребует внешнего API для запроса, такие как Selenium WebDriver, потому что getComputedStyle не возвращает то, что на самом деле делает: http://jsfiddle.net/yTUnt/

+1

Сгенерированное содержимое применимо только к псевдоэлементам ': before' и': after' - вы уверены ваш CSS правильный? – BoltClock

+0

@ BoltClock'saUnicorn Нет, нет Я не: D исправлено - спасибо! –

+0

Ну, вы не можете использовать стандартный API (DOM, CSSOM, ...). Какой браузер (ы) вы нацеливаете? –

ответ

1

Очевидно, что существует нет никакого общественного, стандартный интерфейс, который позволил бы запрашивая значение счетчика:

Там нет никаких доказательств того, там или где-нибудь еще, что ситуация изменилась, поскольку эти вопросы были первоначально просили, и что это Теперь можно это сделать.

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

Нет никаких признаков того, что WebDriver сам подключается к любому частному API для обеспечения такой функциональности.

Существует опция, которая не полагается на частные API и не требует загрязнения DOM или выполнения нумерации. Этот параметр заключается в том, чтобы сначала определить вручную, какие параметры CSS необходимо установить для наших элементов, чтобы получить желаемые результаты, а затем проверить в тестовом наборе, что эти параметры действительно присутствуют во время выполнения. У меня есть пример here, основанный на скрипке, предоставленной в вопросе. В этом примере один список получает пользовательскую нумерацию, поскольку он имеет класс custom. Во втором списке не хватает нумерации, потому что из-за (имитируемой) опечатки она имеет класс costum. Используя getComputedStyle, мы можем проверить, что применяется к интересующим элементам, когда применяются все применяемые стили. Таким образом, мы можем определить, не получают ли элементы правильные параметры CSS из-за опечаток в CSS, опечатки в атрибуте style или правила CSS, которые мешают друг другу.

В примерах проверки выполняются на стороне браузера. Селен-эквивалент в Ruby должен был бы использовать метод css_value для получения значения интересующих нас параметров.

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