2013-02-19 15 views
9
Ben bir işareti sihirbazı oluşturmak için hazırlamak kullanıyorum

, ama Kapibara (2.0.2)Devise/Capybara Belirsiz eşleme

Feature: Signing up 
    In order to be attributed for my work 
    As a user 
    I want to be able to sign u 

Scenario: Signing up 
    Given I am on the homepage 
    When I follow "Sign up" 
    And I fill in "Email" with "[email protected]" 
    And I fill in "Password" with "password" 
    Ambiguous match, found 2 elements matching field "Password" (Capybara::Ambiguous) 
./features/step_definitions/web_steps.rb:10:in `/^(?:|I)fill in "([^"]*)" with "([^"]*)"$/' 
features/signing_up.feature:10:in `And I fill in "Password" with "password"' 
    And I fill in "Password confirmation" with "password" 
    And I press "Sign up" 
    Then I should see "You have signed up successfully." 

adım tanım sürüm 2.0 Capybara yıllarda

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

cevap

8

olduğunu yükseltir find yöntemi, bulunan konum belirleyicisiyle eşleşen birkaç öğe bulunduğunda Capybara::Ambiguous istisnasını yükseltir. Capybara senin için belirsiz bir seçim yapmak istemiyor.

uygun bir çözüm bir konumlayıcı (örneğin find('#id').set('password') veya fill_in('field_name', with: 'password') aynı biraz daha uzun bir açıklama için Capybara 2.0 Upgrade guide arasında

Okuma "belirsiz maçlar" bölümü kullanmaktır. Capybara 2.1 ile

62

, bu çalışır:

here itibaren
fill_in("Password", with: '123456', :match => :prefer_exact) 
    fill_in("Password confirmation", with: '123456', :match => :prefer_exact) 

: prefer_exact Capybara 1.x'in içerdiği davranıştır Birden fazla eşleşme bulunursa, bazıları kesin olan ve bazıları olmayan, daha sonra ilk eşlenik eşleme elemanı döndürülür.

+6

fill_in ("Şifre", ile: '123456',: eşleşme =>: ilk) iyi bir tane de – Norto23