Проверьте, сфокусирован ли элемент с помощью Selenium Webdriver

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

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

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

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

5 ответов

Решение

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

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

driver.switchTo().activeElement();

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

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

driver.switchTo().defaultContent();

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

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

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

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

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

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

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

NB. Невозможно комментировать, так как недостаточно репутации.

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

Другие вопросы по тегам