Capybara与selenium,send_key不起作用

时间:2013-02-13 22:22:47

标签: ruby cucumber capybara nokogiri

我正在使用Cucumber来测试没有提交按钮的评论表单。我发现selenium有一个名为send_key的方法,理论上应该允许我这样做:

find_field('my-field').native.send_key(:enter)

但是当我进行测试时,我得到了:

undefined method `send_key' for #<Nokogiri::XML::Element:0x007f874b361828> (NoMethodError)

不知道我做错了什么。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您必须使用Selenium驱动程序而不是Capybara中的:rack_test驱动程序来访问send_keys方法:

  • 如果您使用的是捆绑包,请安装gem selenium-webdriver并将其添加到您的gem文件中。
  • 使用:js => true标记您的测试,以便它与Selenium驱动程序一起运行。

您收到错误,因为默认情况下,Capybara使用:rack_test驱动程序。在元素上调用native可访问特定于驱动程序的方法。 :rack_test驱动程序元素本身实现为Nokogiri::XML::Element,因此send_keys方法不存在,您会收到此错误。

答案 1 :(得分:0)

尝试使用xpath

within(:xpath, "//form[@id='the_form']") do
  locate(:xpath, "//input[@name='the_input']").set(value)
  locate(:xpath, "//input[@name='the_input']").node.send_keys(:return)
end