2013-02-19 21 views
9

मैं जादूगर एक संकेत बनाने के लिए चिंतन का उपयोग कर रहा, लेकिन capybara (2.0.2) को जन्म देती हैवसीयत/Capybara अस्पष्ट मिलान

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." 

कदम परिभाषा

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

उत्तर

8

है संस्करण 2.0 Capybara के दशक में find विधि Capybara::Ambiguous अपवाद उठाती है जब निर्दिष्ट लोकेटर से मेल खाने वाले कई तत्व मिलते हैं। Capybara आपके लिए एक अस्पष्ट पसंद नहीं करना चाहता है।

उचित समाधान एक और लोकेटर (जैसे find('#id').set('password') या fill_in('field_name', with: 'password')

पढ़ें "अस्पष्ट मिलान" Capybara 2.0 Upgrade guide की इसी का एक सा रह गया विवरण के लिए खंड का प्रयोग है।

62

Capybara 2.1 के साथ, इस काम करता है:

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

here से: prefer_exact व्यवहार Capybara 1.x. में मौजूद है यदि एकाधिक मिलान पाए जाते हैं, जिनमें से कुछ सटीक हैं, और जिनमें से कुछ नहीं हैं, तो पहला इक्सक्टली मिलान तत्व वापस कर दिया जाता है।

+6

fill_in ("पासवर्ड", के साथ: '123456',: match =>: पहला) भी एक अच्छा है – Norto23

संबंधित मुद्दे