Capybara Selenium click_link:undefined方法`start_with?'为零:NilClass

时间:2014-02-05 15:31:15

标签: ruby-on-rails selenium ruby-on-rails-3.2 capybara

我正在使用Capybara 2.1.0和Selenium-Webkit 2.38.0 gems来测试Rails 3.2.13应用程序。

我有以下测试:

visit my_favorite_path
click_link_or_button 'Share'
page.should have_link 'Send Email'
click_link_or_button 'Send Email'
last_email.should be_present

第二个“click_link_or_button”失败,出现以下(非常不透明)错误:

Failure/Error: click_link_or_button 'Send Email'
NoMethodError:
   undefined method `start_with?' for nil:NilClass

当我使用click_link 'Send Email'first(:link, 'Send Email').click替换有问题的行时出现同样的错误。

这可能是什么问题?测试的第三行通过,似乎确认链接存在,但是然后尝试单击链接失败,这是一个非常无用的错误。

2 个答案:

答案 0 :(得分:1)

好吧,愚蠢的我,我忘了在考试中加入js: true,这似乎解决了这个问题:

it 'should send an email when I ask it to', js: true do
  visit my_favorite_path
  click_link_or_button 'Share'
  page.should have_link 'Send Email'
  click_link_or_button 'Send Email'
  last_email.should be_present
end

我真的更愿意删除这个问题,但似乎我不能再这样了。无论如何,也许这对找到这个的人有帮助。

答案 1 :(得分:0)

试试这个:

click_button "Send Email"

或者可能是某些验证失败检查您的模型和控制器代码。其中使用了start_with。