Подтвердить что ты не робот

Тестирование фокуса с 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 nothing like 'has_focus?'
  find_field("category_name").should have_focus  
end

проблема в том, что я ничего не смог найти, чтобы проверить, имеет ли элемент фокус. Единственное, что я нашел, это

page.evaluate_script('document.focus')[:id]

который, однако, не поддерживается драйвером capybara-wekbit, который я использую, чтобы не открывать браузер для каждого тестового прогона.

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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