ruby-on-rails-3 - 使用 Capybara 测试焦点

标签 ruby-on-rails-3 rspec integration-testing capybara

我有一个简单的link_to_function在我看来模板

<%= link_to_function "add new category", "$('#category_name').focus()" %>

我想使用请求规范与 capybara 进行测试。基本上规范应该是这样的
it "focuses category form when I click 'add new category'" do
  visit new_article_path
  click_link "add new category"

  # unfortunately there's nothing like 'has_focus?'
  find_field("category_name").should have_focus  
end

问题是,我找不到任何东西,这将检查元素是否有焦点。
我唯一找到的是这个
page.evaluate_script('document.focus')[:id]

但是 capybara-wekbit 不支持驱动程序,我使用它来避免每次测试运行都打开浏览器。

最佳答案

使用 Selenium 驱动程序,您可以获得焦点元素:

page.driver.browser.switch_to.active_element

然后你可以用它做你喜欢的事
page.driver.browser.switch_to.active_element.send_keys "some text"

请注意,它返回 Selenium::WebDriver::Elementfind返回 Capybara::Node::Element所以比较它们时要小心
expect(page.driver.browser.switch_to.active_element).to eql(find('#some-element').native)

关于ruby-on-rails-3 - 使用 Capybara 测试焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7940525/

相关文章:

python - 单元测试、断言函数 Called() 和代码灵活性

android - 使android应用程序从rails表中获取数据

ruby-on-rails - 测试:没有路由匹配 {:action= >"show", :controller= >"users", :id=>nil}

integration-testing - 程序员使用哪些技术来编写可维护的集成/功能/验收测试?

maven - Solr 5 与 Maven 的集成测试

ruby-on-rails-3 - 我如何在 rails rspec 中测试 cookie 的过期时间

ruby-on-rails - 如何检查sidekiq是否启动?

ruby-on-rails-3 - 如何在 Rails 中传递 Bootstrap 变量

ruby-on-rails-3 - 如何更改 javascripts 模板文件夹的 Rails 资源位置?

ruby - 在 Capybara Webkit 测试中将 Ctrl-S 发送到浏览器