Тест пользовательского интерфейса {Capybara + Cucumber]: как проверить, есть ли у определенного текстового поля фокус - PullRequest
1 голос
/ 27 января 2011

Привет. В настоящее время я проверяю, находится ли конкретное поле в фокусе при загрузке страницы. Я нигде не мог найти, как это сделать. По сути, я хочу проверить, находится ли конкретный элемент на странице в фокусе. Есть ли встроенный метод, чтобы проверить это?

Спасибо.

Ответы [ 3 ]

1 голос
/ 27 января 2011

document.activeElement дает его, но это свойство доступно только в современных браузерах.

1 голос
/ 27 января 2011

Нет встроенного метода, который бы указывал на то, что имеет фокус.

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

0 голосов
/ 24 августа 2011

Лучший способ проверить, имеет ли элемент фокус с помощью 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

Надеюсь, что поможет другим, кто имеет эту же проблему.

...