use*_*542 5 rspec capybara ruby-on-rails-3
我\xc2\xb4m 正在学习 Ruby on Rails,并且 i\xc2\xb4m 正在开发一个使用 stripe 创建高级帐户的应用程序。此外,i\xc2\xb4m 使用 Rspec 和 Capybara 进行集成测试。
\n\nrequire \'spec_helper\'\n\nfeature "user upgrade account to a premium plan" do\n scenario "user upgrade account", :js => true do\n user = FactoryGirl.create :user\n visit new_user_session_path\n fill_in \'Email\', :with => user.email\n fill_in \'Password\', :with => user.password\n click_button \'Sign in\'\n\n visit new_charge_path\n click_button "Pay with Card"\n\n fill_in \'Email\', :with => \'persona@example.com\'\n fill_in "Card number", :with => "4242424242424242"\n fill_in \'CVC\', :with => \'123\'\n fill_in \'MM/YY\', :with => \'11/14\'\n\n click_button \'Pay $5.00\'\n\n end\nRun Code Online (Sandbox Code Playgroud)\n\n我运行测试并收到一条错误消息:
\n\n Failure/Error: fill_in "Card number", :with => "4242424242424242"\n Capybara::ElementNotFound:\n Unable to find field "Card number"\nRun Code Online (Sandbox Code Playgroud)\n\n有人知道,可能是什么问题吗?\n谢谢。
\n尝试使用元素 id 而不是字段标签。
fill_in 'card_number', :with => '4242424242424242'
fill_in 'cvc', :with => '123'
Run Code Online (Sandbox Code Playgroud)
(card_number 和 cvc 输入字段的 ID。)
= f.text_field :card_number, :class => 'span12', :id => :card_number
= f.text_field :cvc, :class => 'span12', :id => :cvc
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题,我使用了这个解决方案,不确定这是否是好的做法,但对我有用。