Лучший способ проверить, имеет ли элемент фокусировку с помощью JQuery, использовать команду .is (': focus') или выбрать элемент с фокусом, используя $ (': focus'). Однако с Capybara это невозможно, так как Capybara Webkit или Selenium ВСЕГДА расскажут вам, что все элементы не имеют фокуса, поскольку в момент тестирования у браузера не было фокуса в ОС.
Однако я нашел решение этой проблемы и разработал простой скрипт для устранения этой проблемы при выполнении ваших тестов. Проблема заключается в том, что пользовательский сопоставление вашего браузера и селектор запросов являются операционной системой, а это означает, что если ваш браузер и вкладка веб-страницы не имеют фокуса в операционной системе, селектор: focus не будет соответствовать ЛЮБЫМ элементам вашего документа. Я проговорил внутри JQuery, чтобы найти способ обойти это, и это можно сделать, просто заставив JQuery использовать Sizzle и не оптимизировать селекторные запросы, используя собственные функции браузера.
Если вы включили следующий сценарий https://gist.github.com/1166821 ПЕРЕД тем, как вы включите JQuery, ваши тесты Selenium пройдут: фокусные тесты.
Для полной записи до выпуска, решения и как запустить тесты, пожалуйста, ознакомьтесь http://blog.mattheworiordan.com/post/9308775285/testing-focus-with-jquery-and-selenium-or
Надежда, что помогает другим, которые имеют тот же самый вопрос.