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: работа с фокусом ввода доступна прямо на поле.

Абстрактное поле редактора (поле ввода).

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:
Returns:

поле ввода

getAttributeName

public String getAttributeName()

Возвращает имя атрибута, соответствущего полю ввода.

Значение хранится в атрибуте DataAttributes.DATA_ATTRIBUTE_NAME html-элемента.

Returns:

Имя атрибута (или переопределенное имя атрибута)

getBehavior

protected AbstractField.Behavior getBehavior()

Получить текущее поведение поля. По факту: определить, где находится поле – в карточке или в табличном представлении.

Returns:

тип поведения поля

getWebElement

public WebElement getWebElement()

Added in version 1.2.1.

Получить живую ссылку на dom-элемент поля.

Поле на карточке и на панели фильтров фронтенд перерисовывает целиком, например когда сервер принял выбранное значение, и сохранённая ссылка выкидывается из документа. Тогда поле разыскивается заново у того же родителя и по тому же имени атрибута, по которым было получено (get(AbstractView, String)). Поля табличного представления заменяют ссылку своим релокатором (tryRelocate()).

Throws:
Returns:

dom-элемент поля

invalidateElementReference

protected void invalidateElementReference()

Added in version 1.2.1.

Сбросить кэшированные дочерние dom-элементы поля.

Вызывается при обнаружении невалидной ссылки на dom-элемент перед повторной попыткой действия. Наследники, кэширующие дочерние элементы (например, input), должны переопределить метод и сбросить кэш.

overrideAttributeName

public final void overrideAttributeName(String attributeName)

Переопределить имя атрибута. Требуется для исключительных случаев.

Parameters:
  • attributeName – назначаемое имя атрибута

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, если релокатор не назначен