我试图提交一个没有按钮的表单,只使用水豚和Rspec(没有 cucumber 或 selenium ,我知道已经有一个问题)。
我看到有一个要点,添加一个方法来提交一个没有按钮的表单:
module SubmitRackTestFormWithoutButton
def submit_form!
Capybara::RackTest::Form.new(driver, form).submit({})
end
end
Capybara::RackTest::Node.send :include, SubmitRackTestFormWithoutButton
字符串
https://gist.github.com/989533,但我没有让它工作,我留下了一个评论:
我得到了未定义的方法`submit_form!' for #Capybara::Node::Element:...实际上由“Capybara::RackTest::Node.send:include,SubmitRackTestFormWithoutButton”方法submit_form!被添加到节点(而不是元素),但find返回一个元素
你有没有一些想法来解决这个要点,或者其他一些解决方案来提交一个没有按钮的表单?
谢啦,谢啦
7条答案
按热度按时间h7appiyu1#
你所有的产品代码都应该是可测试的,所以如果你添加了一个只供测试使用的代码,那么测试就没有意义了。
试着这样做:
字符串
nhjlsmyf2#
这里有一个简单的解决方案,不需要capybarywebkit、qt、lmnop或其他。
不需要提交按钮。人们说你需要它,但不管怎样。
只需要monkeypatch一两节课
字符串
然后你可以做一些
型
这有点像jacob的答案,但对于他的答案,你必须在测试的中间定义。
对于这个解决方案,您可以在/support目录中的某个文件中定义这个,或者在该规范的开头等等。它减少了测试中的混乱。
cnh2zyt33#
您可以通过在输入中按Enter键来完成此操作
字符串
atmip9wb4#
我在水豚1.1.2中得到了这个:
字符串
这里描述了类似的解决方案:http://minimul.com/submitting-a-form-without-a-button-using-capybara.html
vql8enpb5#
尽管使用capybara可以实现您想要的目标,但更简单、更实用的解决方案是在表单上放置一个提交按钮。
没有理由在表单上没有按钮,没有表单是不好的可访问性,没有GUI或正在使用屏幕阅读器的用户将在提交表单时遇到麻烦。
如果你不希望表单按钮可见,我可以建议你使用一些CSS来隐藏它:
字符串
um6iljoc6#
现在你应该使用click_on
字符串
fhg3lkii7#
最好的解决方案是使用JS驱动测试(如前面提到的comment above):
字符串
如果没有JS驱动程序:
事实上,每个表单都应该有一个按钮,如果按钮不应该出现在UI中,只需使用
display: none
隐藏它,然后改为click_button
:型