AbstractField¶
- public abstract class AbstractField extends AbstractUiElement implements AbstractEditor, Focusable¶
Added in version 1.1.0: Методы приведены к соглашению по именам (см. описания соответствующих методов).
Added in version 1.1.3: Добавлена поддержка табличных представлений в карточном режиме.
Added in version 1.2.1: Реализован
Focusable: работа с фокусом ввода доступна прямо на поле.Абстрактное поле редактора (поле ввода).
See also
Constructors¶
AbstractField¶
- public AbstractField(AbstractUiElement parent, WebElement webElement, AbstractField.Behavior behavior)¶
Methods¶
find¶
- public static Optional<AbstractField> find(AbstractView parent, String attributeName)¶
Added in version 1.1.0: Метод приведен к соглашению по именам (ранее возвращалось поле ввода, теперь возвращается опциональное поле ввода)
Метод выполняет поиск html-элемента, соответствующего полю ввода с указанным именем атрибута, в дереве html-элементов браузера, ограниченном указанным родительски элементом.
- Parameters:
parent – родительский элемент
attributeName – имя атрибута
- Returns:
опциональное поле ввода
findAll¶
- public static AbstractField[] findAll(AbstractView parent)¶
Метод выполняет поиск html-элементов, соответствующих полям ввода, в дереве html-элементов браузера, ограниченном указанным родительски элементом.
- Parameters:
parent – родительский элемент
- Returns:
массив полей
get¶
- public static AbstractField get(AbstractView parent, String attributeName)¶
Added in version 1.1.0.
Метод возвращает html-элемент, соответствующий полю ввода с указанным именем атрибута, в дереве html-элементов браузера, ограниченном указанным родительски элементом.
- Parameters:
parent – родительский элемент
attributeName – имя атрибута
- Throws:
ElementNotFoundException– если элемент не найден
- Returns:
поле ввода
getAttributeName¶
- public String getAttributeName()¶
Возвращает имя атрибута, соответствущего полю ввода.
Значение хранится в атрибуте
DataAttributes.DATA_ATTRIBUTE_NAMEhtml-элемента.- Returns:
Имя атрибута (или переопределенное имя атрибута)
getBehavior¶
- protected AbstractField.Behavior getBehavior()¶
Получить текущее поведение поля. По факту: определить, где находится поле – в карточке или в табличном представлении.
- Returns:
тип поведения поля
getWebElement¶
- public WebElement getWebElement()¶
Added in version 1.2.1.
Получить живую ссылку на dom-элемент поля.
Поле на карточке и на панели фильтров фронтенд перерисовывает целиком, например когда сервер принял выбранное значение, и сохранённая ссылка выкидывается из документа. Тогда поле разыскивается заново у того же родителя и по тому же имени атрибута, по которым было получено (
get(AbstractView, String)). Поля табличного представления заменяют ссылку своим релокатором (tryRelocate()).- Throws:
org.openqa.selenium.TimeoutException– если поле не отрисовано заново за отведённое время
- Returns:
dom-элемент поля
invalidateElementReference¶
- protected void invalidateElementReference()¶
Added in version 1.2.1.
Сбросить кэшированные дочерние dom-элементы поля.
Вызывается при обнаружении невалидной ссылки на dom-элемент перед повторной попыткой действия. Наследники, кэширующие дочерние элементы (например, input), должны переопределить метод и сбросить кэш.
overrideAttributeName¶
retryOnStale¶
- protected final <T> T retryOnStale(Supplier<T> action)¶
Added in version 1.2.1.
Выполнить действие с одной повторной попыткой при получении
StaleElementReferenceException.Перед повторной попыткой сбрасывается кэш дочерних элементов (
invalidateElementReference()), и, если корневой dom-элемент поля невалиден, выполняется его тихая замена (tryRelocate()). Если корневой элемент невалиден и релокатор не назначен, исходное исключение пробрасывается дальше.- Parameters:
action – действие, возвращающее значение
<T> – тип возвращаемого значения
- Returns:
результат действия
retryOnStale¶
- protected final void retryOnStale(Runnable action)¶
Added in version 1.2.1.
Выполнить действие без возвращаемого значения с одной повторной попыткой при получении
StaleElementReferenceException.- Parameters:
action – действие
See also
<T>retryOnStale(java.util.function.Supplier
setRelocator¶
- public final void setRelocator(Supplier<WebElement> relocator)¶
Added in version 1.2.1.
Deprecated since version только: для внутреннего использования библиотекой; не вызывать из прикладного кода. Подлежит сокрытию.
Назначить полю функцию повторного поиска dom-элемента (релокатор).
Релокатор выполняет только поиск элемента в dom-дереве
ВНИМАНИЕ: метод предназначен исключительно для внутреннего использования библиотекой gs-automation и не является частью публичного API. Прикладным разработчикам и заказчикам вызывать его ЗАПРЕЩЕНО. Метод публичен только по техническим причинам (вызов из другого пакета) и будет скрыт в следующих версиях. Передача произвольного релокатора нарушает механизм тихой замены dom-элемента (
tryRelocate()) и приводит к непредсказуемому поведению поля.- Parameters:
relocator – функция повторного поиска dom-элемента поля
tryRelocate¶
- protected final boolean tryRelocate()¶
Added in version 1.2.1.
Выполнить тихую замену ссылки на dom-элемент поля по образцу локаторов Playwright: повторный поиск элемента без каких-либо действий в UI и без перезагрузки страницы.
Требуется в ситуациях, когда dom-элемент поля пересоздается фронтендом (например, динамический редактор в табличном представлении пересоздается после коммита значения), и сохраненная ссылка становится невалидной (
StaleElementReferenceException).- Returns:
true, если ссылка заменена; false, если релокатор не назначен