5

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

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

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

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

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

4

3 回答 3

3

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

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

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

于 2014-10-30T09:59:33.797 回答
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
于 2013-02-18T22:58:23.067 回答
0

你也可以有一个隐藏的按钮。Capybara可以看到并点击它。

<%= form.submit "OK", style: "display: none;" %>

然后在你的测试中:

Capybara.ignore_hidden_elements = false
click_on "OK"
于 2021-09-17T22:29:13.030 回答