Capybara跳过click_button

时间:2013-04-08 16:36:08

标签: ruby-on-rails-3 cucumber capybara

我有一个填充某些字段的测试然后应该单击一个按钮。这一切都是在加载模态窗口后完成的。但是,它似乎只是跳过它并且没有单击按钮。我已经尝试手动调试并自己调用它并且它会正常工作但是当我自己运行测试时它不会点击它。

Given /^I login with "(.*?)" and "(.*?)"$/ do |email, password|
  within "#signin_fields" do
    fill_in("custom_fields_email", :with => email)
    fill_in("custom_fields_password", :with => password)
  end
  click_button("Sign In") if page.should have_selector(".btn-signin")
end

我甚至添加了一个检查以确保它在页面上但是因为删除了wait_until,我不确定我应该如何让页面加载,然后确保它正确地单击按钮。任何想法都会非常感激。

3 个答案:

答案 0 :(得分:0)

您的代码中的以下行不正确,因为have_selector是RSpec匹配器:

click_button("Sign In") if page.should have_selector(".btn-signin")

相反,你应该使用Capybara::Node::Matchers中的任何一个:

click_button("Sign In") if page.has_selector?(".btn-signin")

答案 1 :(得分:0)

这篇文章可能有所帮助:How do you get rspec to output what it encountered rather than it "didn't find what it expected"?基本上,为了进行调试,您可以添加行save and open page并检查规范查找内容以及它是否与您自己的调试结果不同。

答案 2 :(得分:-1)

page.should have_selector(“。btn-signin”)不会返回true或false,因此永远不会点击该按钮。就这样做:

click_button(".btn-signin")

如果它应该在那里,那么如果它没有出现在页面上,测试将会失败。