cucumber - 了解 Capybara 中的 native 和 send_keys

标签 cucumber capybara

我试图理解以下 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

最佳答案

Capybara 使用驱动程序来控制浏览器或浏览器模拟器(Rack::Test、Poltergeist、Selenium 等)。每个驱动程序都必须实现 Capybara 定义的 API。该 API 包括 Element 类及其 .native方法。 .native返回驱动程序内部用于表示 DOM 元素的对象。 Capybara 本身对该对象没有任何用处,但该对象的某些驱动程序实现具有特定于驱动程序的方法,这些方法在测试中很有用。
.clear.send_keys那么,是 DOM 元素上的特定于驱动程序的方法,其 CSS 选择器是 #recipe-name .大概是用户输入的元素。我们大概能猜到是什么.clear做。 .send_keys告诉元素用户已按顺序按下给定字符串中的每个键。

使用要点.send_keys而不仅仅是做 fill_in '#recipe-name' with: 'Email recipe'是某些浏览器行为,例如 Javascript 事件,仅在用户按下某个键时才会发生。显然 fill_in以不会使浏览器认为已按下任何键的方式将文本放入元素中。所以如果你正在测试一些关心按键事件的东西,你需要使用 .send_keys .

我举了一个使用.send_keys的例子在 my answer to a question about testing a jQuery autocomplete field .

关于cucumber - 了解 Capybara 中的 native 和 send_keys,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25651393/

相关文章:

ruby-on-rails-3 - Capybara 测试 :js=>true. .. 路由错误:没有路由匹配 [GET] "/assets"

ruby-on-rails-3 - Rails 3 cucumber 加载错误

ruby-on-rails - Omniauth Cucumber 测试 - 路由错误

ruby-on-rails - 如何将 capybara 输出html放到特定的文件夹?

ruby-on-rails - docker 中的 Capybara headless chrome 返回 DevToolsActivePort 文件不存在

ruby-on-rails - rails rspec capybara 测试 Capybara::ElementNotFound: 无法找到字段 "title"

ruby-on-rails - 使用 zeus : Postgres is being accessed by other users 进行 cucumber 和 RSpec 测试

ruby - 针对多个环境运行 cucumber 场景?

ruby - 是否可以从功能文件导航到 VSCode 中的步骤定义

php - 我可以在 Rails (PHP) 之外的框架上使用 Capybara 吗?