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