метод fill_in у capybara не работает должным образом - PullRequest
2 голосов
/ 27 сентября 2011

У меня есть 2 формы на моей странице. Первая форма имеет поле «Имя пользователя», а вторая форма имеет поле «Имя пользователя:».

Когда запускается fill_in label, :with => value (где label = "Username:"), вместо этого заполняется поле ввода с именем "Username".

Я изменил «Имя пользователя:» на «Имя пользователя:», но даже тогда «Имя пользователя» заполняется.

Что я делаю не так?

1 Ответ

3 голосов
/ 27 сентября 2011

Если я правильно понимаю, на вашей странице есть 2 текстовых ввода с одинаковыми именами в 2 разных формах.

Я полагаю, fill_in some_field будет искать ввод с именем или идентификатором, совпадающим с some_field, а не читать прикрепленную метку. Редактировать: На самом деле он ищет прикрепленную этикетку - спасибо AlistairH за исправление

Я бы предложил лучший способ получить желаемое поведение, используя блок within:

within 'form1' do
    fill_in 'Username', :with => value
end

Замените 'form1' на имя той формы, которая содержит текстовое поле, на которое вы хотите настроить таргетинг.

Я бы посчитал, что это гораздо более надежно и читабельно, чем полагаться на наличие пробелов или двоеточий для различения почти одинаково названных элементов на странице

...