Проверьте, сфокусирован ли элемент с помощью Selenium Webdriver - PullRequest
11 голосов
/ 26 сентября 2011

Я действительно удивлен, что не могу найти ссылки в Интернете на тестирование фокусировки элементов с помощью Selenium Webdriver.

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

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

Спасибо за любую помощь.

Ответы [ 5 ]

27 голосов
/ 17 августа 2012

driver.switchTo().activeElement() вернет текущее значение WebElement. Равенство четко определено для WebElement, поэтому вы можете позвонить element.equals(driver.switchTo().activeElement()).

Вызов слегка вводящего в заблуждение имени driver.switchTo().activeElement() на самом деле не меняет фокус, как и driver.findElement(), поэтому вам не нужно switchTo().defaultContent() после; на самом деле, это может привести к размытию текущего элемента.

4 голосов
/ 26 сентября 2011
driver.switchTo().activeElement();

возвращает текущий фокусированный элемент.

Гарантирует, что вы переключитесь обратно после использования

driver.switchTo().defaultContent();

Также, если ничего не сфокусировано, возвращается body документа.

Посмотрите и на этот вопрос.

В Selenium как найти «Текущий» объект

0 голосов
/ 05 марта 2015

@ danielwagner-hall boolean bb = driver.switchTo().activeElement().equals(driver.findElement(By.id("widget_113_si‌​gnup_username"))); всегда будет проходить, но это не доказывает, что элемент находится в фокусе, если элемент находится вне поля зрения.

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

Одним из способов решения этой проблемы может быть использование webElement.getLocation().getX(); getY() методов и указание координат на странице и проверка ее фокуса..

0 голосов
/ 19 июля 2012

Предполагается, что WebDriver меняет фокус при использовании вызовов Driver.FindElement.Таким образом, вы последний элемент в контексте драйвера активен.

ПРИМЕЧАНИЕ: Это прерывание для любых динамически внедряемых элементов (например, jQuery), поэтому вам нужно будет идти по маршруту.

0 голосов
/ 26 сентября 2011

Вы можете найти активный элемент, используя селектор 'dom = document.activeElement'.Затем вы можете утверждать, является ли этот элемент сфокусированным или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...