2013-01-13 4 views
3

내 페이지카피 바라/오이 모호한 일치

<div> 
    <label for="user_password">Heslo</label> 
    <br /> 
    <input id="user_password" name="user[password]" size="30" type="password"> 
    </div> 

    <div> 
    <label for="user_password_confirmation">Heslo pro kontrolu</label> 
    <br> 
    <input id="user_password_confirmation" name="user[password_confirmation]" size="30" type="password"> 
    </div> 

이 코드가 그리고 오이에 다음 단계를 사용하고 싶습니다 :

And I fill in "Heslo" with "NeznameHeslo328" 
And I fill in "Heslo pro konrolu" with "NeznameHeslo328" 

단계 정의는 간단하다 :

When /^I fill in "([^"]*)" with "([^"]*)"$/ do |name, text| 
    fill_in(name, :with => text) 
end 

but capybara raises 모호한 일치, 2 el 발견 ements 매치 필드 "Heslo"(Capybara :: Ambiguous) 첫 단계.

레이블 이름을 for="user_password_confirmation"으로 변경하면 "Hesla pro kontrolu"(따라서 두 번째 단계), 모든 사항이 정상입니다.

카피 바라가 라벨 내에서 정확한 어구와 일치하도록 할 수있는 방법이 있습니까? 시나리오에서 CSS 선택기를 사용하지 않고.

답변

2

업데이트

카피 바라 2.1에서 you can use :exact option :

이 옵션은 카피 바라 이전 버전의 기본


에 의해 false로 설정이 정확한을 할 수는 없습니다되어

fill_in(name, with: 'Heslo', exact: true) 

문자열 일치. 모든 일치는 부분 문자열을 사용하여 수행됩니다. 다른 선택기 유형 만 사용할 수 있습니다.

+0

고마워. 해결 방법을 몇 가지 할 것입니다. – Foton

0

이것이 내가 사용하기 시작한 것입니다. 지금까지 나를 위해 일하고있다.

Given /^I fill in "([^\"]*)" with "([^\"]*)"$/ do |field_name, text| 
    page.find(field_name).set "#{text}" 
end 
+0

이것은 css (field_name)로 검색 할 때 유용합니다. 그러나 그것은 시나리오에서 올바르지 않습니다. 나는 시나리오가 사용자 관점에서 이루어져야한다고 생각한다. 사용자는 "# password_confirmation"이 아니라 "Password confirmation"을 보게됩니다. – Foton