我试图理解以下Capybara语法的含义。native到底是做什么的?send_keys是用来干什么的?另外,我想了解这个特定的块是做什么的。
within('#step-3') do
recipe_name = first(:xpath, '//*[@id="recipe-name"]').native
recipe_name.clear
recipe_name.send_keys('Email recipe')
end发布于 2014-09-06 14:15:29
Capybara使用驱动程序控制浏览器或浏览器模拟器(Rack::Test、Poltergeist、Selenium等)。每个驱动程序都必须实现Capybara定义的API。该API包括元素类及其.native方法。.native返回驱动程序内部用来表示DOM元素的对象。Capybara本身对该对象没有任何用处,但有些驱动程序实现该对象时有特定于驱动程序的方法,可以在测试中使用。
因此,.clear和.send_keys是CSS选择器为#recipe-name的DOM元素上特定于驱动程序的方法。想必它是用户输入的一个元素。我们大概可以猜到.clear做了什么。.send_keys告诉元素用户按下给定字符串中的每个键的顺序。
使用.send_keys而不仅仅是执行fill_in '#recipe-name' with: 'Email recipe'的目的是,某些浏览器行为,例如Javascript事件,只有在用户按下键时才会发生。显然,fill_in将文本放入元素中的方式并不会使浏览器认为任何键都已按下。因此,如果您正在测试一些关心keypress事件的内容,则需要使用.send_keys。
我给出了一个在.send_keys中使用my answer to a question about testing a jQuery autocomplete field的例子。
https://stackoverflow.com/questions/25651393
复制相似问题