Тестирование фокуса с капибарой - PullRequest
15 голосов
/ 29 октября 2011

У меня есть простой link_to_function в моем представлении шаблон

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

и я хочу проверить это с капибарой, используя спецификации запроса. По сути, спецификация должна выглядеть примерно так:

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, который я использую, чтобы не открывать браузер при каждом запуске теста.

Ответы [ 2 ]

24 голосов
/ 01 ноября 2012

Я только что использовал следующий код (с драйвером phantomjs, но я считаю, что он работает и с webkit):

page.evaluate_script("document.activeElement.id") == "some_id"

PS Один год вопроса без ответа.Должны ли они дать мне значок?:)

7 голосов
/ 23 мая 2013

Вы должны использовать селектор :focus, например:

page.should have_selector('#category_name:focus')
...