Capybara 无法从 Stripe 中找到表单字段?

use*_*542 5 rspec capybara ruby-on-rails-3

我\xc2\xb4m 正在学习 Ruby on Rails,并且 i\xc2\xb4m 正在开发一个使用 stripe 创建高级帐户的应用程序。此外,i\xc2\xb4m 使用 Rspec 和 Capybara 进行集成测试。

\n\n
require \'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\n
Run 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"\n
Run Code Online (Sandbox Code Playgroud)\n\n

有人知道,可能是什么问题吗?\n谢谢。

\n

adb*_*eel 0

尝试使用元素 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)

我遇到了同样的问题,我使用了这个解决方案,不确定这是否是好的做法,但对我有用。