首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解本地人和send_keys在凯巴拉

理解本地人和send_keys在凯巴拉
EN

Stack Overflow用户
提问于 2014-09-03 18:38:52
回答 1查看 6.1K关注 0票数 6

我试图理解以下Capybara语法的含义。native到底是做什么的?send_keys是用来干什么的?另外,我想了解这个特定的块是做什么的。

代码语言:javascript
复制
within('#step-3') do
 recipe_name = first(:xpath, '//*[@id="recipe-name"]').native
 recipe_name.clear
 recipe_name.send_keys('Email recipe')
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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的例子。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25651393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档