Капибара полевая.has_css? согласовани - PullRequest
5 голосов
/ 27 ноября 2011

Я использую следующие спецификации с MiniTest::Spec и Capybara:

find_field('Email').must_have_css('[autofocus]')

, чтобы проверить, имеет ли поле с именем 'Email' атрибут autofocus. doc говорит следующее:

has_css? (Path, options = {})

Проверяет, находится ли данный селектор CSS на странице или текущем узле.

Насколько я понимаю, поле 'Email' - это узел, поэтому вызов must_have_css обязательно должен работать!Что я делаю не так?

Ответы [ 3 ]

8 голосов
/ 28 ноября 2011

Получил ответ от Йонас Никлас :

Нет, это не должно работать. has_css? проверит, есть ли у кого-либо из потомков элемента соответствуют данному CSS. Это не будет проверять элемент сам. Так как свойство автофокуса, скорее всего, в поле электронной почты сам has_css? всегда будет возвращать false в этом случае.

Вы можете попробовать:

find_field('Email')[:autofocus].should be_present

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


Мое решение:

find_field('Email')[:autofocus].must_equal('autofocus')
0 голосов
/ 28 ноября 2011

Я раньше не использовал MiniTest, но ваш синтаксис для проверки атрибута выглядит правильно.

Мое беспокойство будет связано с использованием вами find_field. Документы говорят:

Найти поле формы на странице. Поле можно найти по его имени, идентификатору или тексту метки.

Похоже, вы пытаетесь найти поле на основе метки. Если это так, я бы проверил наличие атрибута for и правильность идентификатора поля формы, которое вы ищете. Чтобы исключить эту проблему, вы можете временно указать идентификатор поля формы и посмотреть на это явно.

0 голосов
/ 27 ноября 2011

С моей головы.Можете ли вы использовать has_selector?().Использование Rspec с Capy:

page.should have_selector('email', autofocus: true)

Также проверьте соответствия Capybara http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Matchers

...