我有一个简单的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::Element
而find
返回 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/