水豚含Selenium,send_key不起作用



我正在使用Cucumber测试一个没有提交按钮的注释表单。我发现硒有一种叫做send_key的方法,理论上应该允许我这样做:

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

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

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

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

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

  • 如果您正在使用bundler,请安装gem selenium-webdriver并将其添加到您的gem文件中
  • 使用:js => true标记测试,使其与Selenium驱动程序一起运行

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

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

您也可以有一个隐藏按钮。水豚可以看到它并点击它。

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

然后在你的测试中:

Capybara.ignore_hidden_elements = false
click_on "OK"

相关内容

  • 没有找到相关文章

最新更新