Проверьте, сфокусирован ли элемент с помощью 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
документа возвращается.
Посмотрите и на этот вопрос.
Предполагается, что WebDriver меняет фокус при использовании Driver.FindElement
звонки. Таким образом, вы последний элемент в контексте драйвера активен.
ПРИМЕЧАНИЕ. Это прерывается для любых динамически внедряемых элементов (например, jQuery), поэтому вам нужно будет пройти путь сценария.
Вы можете найти активный элемент, используя селектор 'dom=document.activeElement'. Затем вы можете утверждать, является ли этот элемент сфокусированным или нет.
@danielwagner-hall The boolean bb = driver.switchTo().activeElement().equals(driver.findElement(By.id("widget_113_signup_username")));
будет всегда проходить, но это не доказывает, что элемент находится в фокусе, если элемент находится вне поля зрения.
NB. Невозможно комментировать, так как недостаточно репутации.
Одним из способов достижения этого может быть использование webElement.getLocation().getX();
getY()
методы и ссылки на координаты на странице и проверить его фокус.