.. java:import:: java.time Duration

.. java:import:: java.util Map

.. java:import:: java.util Optional

.. java:import:: org.openqa.selenium WebElement

.. java:import:: ru.bitec.gs.automation.client BrowserContext

.. java:import:: ru.bitec.gs.automation.client.ui.layout Layout

Selection
=========

.. java:package:: ru.bitec.gs.automation.client.ui
   :noindex:

.. java:type:: public class Selection extends AbstractUiElement

   .. versionadded:: 1.1.0 Добавлен методы :java:ref:`locate(Map) <ru.bitec.gs.automation.client.ui.Selection.locate(Map<java.lang.String,Object>)>` и :java:ref:`locate(Map, LocateOption[]) <ru.bitec.gs.automation.client.ui.Selection.locate(Map<java.lang.String,Object>, LocateOption[])>`, добавлены методы ожидания выборки, имена и сигнатуры методов приведены к :ref:`соглашению по именам<gsauto_namingconvensions>`.

   Выборка.

   Не имеет графического представления на экране, но обладает элементом в дереве html-элементов браузера.

Constructors
------------

Selection
^^^^^^^^^

.. java:constructor:: protected Selection(BrowserContext browserContext, WebElement webElement)
   :outertype: Selection

Selection
^^^^^^^^^

.. java:constructor:: protected Selection(AbstractUiElement parent, WebElement webElement)
   :outertype: Selection

Methods
-------

executeJexl
^^^^^^^^^^^

.. java:method:: public Object executeJexl(String jexlScript) throws AutomationException
   :outertype: Selection

   .. versionadded:: 1.1.0 Добавлено ожидание появления признака окончания выполнения jexl-скрипта по состоянию маркера :java:ref:`Attributes.DATA_SELECTION_JEXL_INPROGRESS <ru.bitec.gs.automation.client.ui.Attributes.DATA_SELECTION_JEXL_INPROGRESS>`.

   Отправляет Jexl-скрипт на сервер, где он выполняется в контексте текущей выборки.

   Для возможности выполнения скриптов, в конфигурации сервера должна быть активирована опция.
   ```<client><automation jexlExecution="true"/><client/>```

   :param jexlScript: Текст Jexl-скрипта.
   :throws AutomationException: если возникли проблемы при вызове операции на выполнение.
   :return: Результат выполнения Jexl-скрипта, возвращённый из скрипта выражением `return "результат";`.

executeOperation
^^^^^^^^^^^^^^^^

.. java:method:: public Object executeOperation(String name) throws AutomationException
   :outertype: Selection

   Отправляет на сервер команду выполнения операции по имени.

   Для возможности выполнения скриптов, в конфигурации сервера должна быть активирована опция
   ```<client><automation operExecution="true"/><client/>```

   :param name: Имя операции.
   :throws AutomationException: если возникли проблемы при вызове операции на выполнение.
   :return: Строка с результатом выполнения операции, если операция возвращает результат.

find
^^^^

.. java:method:: public static Optional<Selection> find(AbstractUiElement parent, String name)
   :outertype: Selection

   .. versionadded:: 1.1.0 Сигнатура приведена к :ref:`соглашению по именам<gsauto_namingconvensions>` (ранее возвращалась выборка, теперь возвращается опциональная выборка).

   Метод ищет первый html-элемент, соответствующий выборке с именем `name` и отображением "Default", во множестве
   дочерних html-элементов элемента `parent`.

   :param parent: родительский html-элемент
   :param name: имя выборки
   :return: Опциональная выборка

find
^^^^

.. java:method:: public static Optional<Selection> find(AbstractUiElement parent, String name, String representation)
   :outertype: Selection

   .. versionadded:: 1.1.0 Сигнатура приведена к :ref:`соглашению по именам<gsauto_namingconvensions>` (ранее возвращалась выборка, теперь возвращается опциональная выборка).

   Метод ищет первый html-элемент, соответствующий выборке с именем `name` и отображением `representation`, во множестве
   дочерних html-элементов элемента `parent`.

   :param parent: родительский html-элемент
   :param name: имя выборки
   :param representation: отображение
   :return: Опциональная выборка

find
^^^^

.. java:method:: public static Optional<Selection> find(AbstractUiElement parent, Name name)
   :outertype: Selection

   .. versionadded:: 1.1.0 Сигнатура приведена к :ref:`соглашению по именам<gsauto_namingconvensions>` (ранее возвращалась выборка, теперь возвращается опциональная выборка).

   Метод ищет первый html-элемент, соответствующий выборке с именем и отображением указанным в `name`, во множестве
   дочерних html-элементов элемента `parent`.

   :param parent: родительский html-элемент
   :param name: имя и отображение выборки
   :return: Опциональная выборка

findAll
^^^^^^^

.. java:method:: public static Selection[] findAll(BrowserContext browserContext)
   :outertype: Selection

   Метод ищет на странице все html-элементы, соответствующие выборкам.

   :param browserContext: Контекст браузера
   :return: Массив выборок

findAll
^^^^^^^

.. java:method:: public static Selection[] findAll(AbstractUiElement parent)
   :outertype: Selection

   Метод ищет все html-элементы, соответствующие выборкам, во множестве дочерних html-элементов элемента `parent`.

   :param parent: родительский html-элемент
   :return: массив выборок

findBySimpleName
^^^^^^^^^^^^^^^^

.. java:method:: static Optional<Selection> findBySimpleName(AbstractUiElement parent, String simpleName, String representation)
   :outertype: Selection

   .. versionadded:: 1.1.0 Сигнатура приведена к :ref:`соглашению по именам<gsauto_namingconvensions>` (ранее возвращалась выборка, теперь возвращается опциональная выборка).

   Метод ищет первый html-элемент, соответствующий выборке с именем завершающимся `simpleName` и отображением `representation`,
   во множестве дочерних html-элементов элемента `parent`.

   Метод относится к системным и не вынесен в public намеренно. Не полные имена могут быть только у главных
   выборок приложений.

   :param parent: родительский html-элемент
   :param simpleName: Краткое имя выборки
   :param representation: отображение
   :return: Опциональная выборка

findBySimpleName
^^^^^^^^^^^^^^^^

.. java:method:: static Optional<Selection> findBySimpleName(AbstractUiElement parent, Name name)
   :outertype: Selection

   .. versionadded:: 1.1.0 Сигнатура приведена к :ref:`соглашению по именам<gsauto_namingconvensions>` (ранее возвращалась выборка, теперь возвращается опциональная выборка).

   Метод ищет первый html-элемент, соответствующий выборке с именем, завершающимся :java:ref:`Name.getSimpleName() <ru.bitec.gs.automation.client.ui.Name.getSimpleName()>`,
   и отображением :java:ref:`Name.getRepresentation() <ru.bitec.gs.automation.client.ui.Name.getRepresentation()>`,
   во множестве дочерних html-элементов элемента `parent`.

   Метод относится к системным и не вынесен в public намеренно. Не полные имена могут быть только у главных
   выборок приложений.

   :param parent: родительский html-элемент
   :param name: Краткое имя и отображение выборки
   :return: Опциональная выборка

get
^^^

.. java:method:: public static Selection get(AbstractUiElement parent, String name) throws ElementNotFoundException
   :outertype: Selection

   .. versionadded:: 1.1.0

   Метод возвращает первый html-элемент, соответствующий выборке с именем `name` и отображением "Default", во множестве
   дочерних html-элементов элемента `parent`.

   :param parent: родительский html-элемент
   :param name: имя выборки
   :throws ElementNotFoundException: если элемент не найден на dom-модели
   :return: Выборка

get
^^^

.. java:method:: public static Selection get(AbstractUiElement parent, String name, String representation) throws ElementNotFoundException
   :outertype: Selection

   .. versionadded:: 1.1.0

   Метод возвращает первый html-элемент, соответствующий выборке с именем `name` и отображением `representation`, во множестве
   дочерних html-элементов элемента `parent`.

   :param parent: родительский html-элемент
   :param name: имя выборки
   :param representation: отображение
   :throws ElementNotFoundException: если элемент не найден на dom-модели
   :return: Выборка

get
^^^

.. java:method:: public static Selection get(AbstractUiElement parent, Name name) throws ElementNotFoundException
   :outertype: Selection

   .. versionadded:: 1.1.0

   Метод возвращает первый html-элемент, соответствующий выборке с именем и отображением указанным в `name`, во множестве
   дочерних html-элементов элемента `parent`.

   :param parent: родительский html-элемент
   :param name: имя и отображение выборки
   :throws ElementNotFoundException: если элемент не найден на dom-модели
   :return: Выборка

getBySimpleName
^^^^^^^^^^^^^^^

.. java:method:: static Selection getBySimpleName(AbstractUiElement parent, String simpleName, String representation) throws ElementNotFoundException
   :outertype: Selection

   .. versionadded:: 1.1.0

   Метод возвращает первый html-элемент, соответствующий выборке с именем завершающимся `simpleName` и отображением `representation`,
   во множестве дочерних html-элементов элемента `parent`.

   Метод относится к системным и не вынесен в public намеренно. Не полные имена могут быть только у главных
   выборок приложений.

   :param parent: родительский html-элемент
   :param simpleName: Краткое имя выборки
   :param representation: отображение
   :throws ElementNotFoundException: если элемент не найден на dom-модели
   :return: выборка

getBySimpleName
^^^^^^^^^^^^^^^

.. java:method:: static Selection getBySimpleName(AbstractUiElement parent, Name name) throws ElementNotFoundException
   :outertype: Selection

   .. versionadded:: 1.1.0

   Метод возвращает первый html-элемент, соответствующий выборке с именем, завершающимся :java:ref:`Name.getSimpleName() <ru.bitec.gs.automation.client.ui.Name.getSimpleName()>`,
   и отображением :java:ref:`Name.getRepresentation() <ru.bitec.gs.automation.client.ui.Name.getRepresentation()>`,
   во множестве дочерних html-элементов элемента `parent`.

   Метод относится к системным и не вынесен в public намеренно. Не полные имена могут быть только у главных
   выборок приложений.

   :param parent: родительский html-элемент
   :param name: Краткое имя и отображение выборки
   :throws ElementNotFoundException: если элемент не найден на dom-модели
   :return: Выборка

getId
^^^^^

.. java:method:: public String getId()
   :outertype: Selection

   Возвращает идентификатор выборки в виде строкового представления.

   :return: Идентификатор

getJexlSelectionLocateScript
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. java:method:: protected static String getJexlSelectionLocateScript(Map<String, Object> propertyMap, Selection.LocateOption[] locateOptions)
   :outertype: Selection

   Конструирование простого запроса вида "selection.locate"

   :param propertyMap: простая карта параметров.
   :param locateOptions: массив опций запроса
   :return: строка, которую можно передать в метод executeJexl

getName
^^^^^^^

.. java:method:: public String getName()
   :outertype: Selection

   Возвращает полное имя.

   :return: полное имя.

getQualifiedName
^^^^^^^^^^^^^^^^

.. java:method:: public Name getQualifiedName()
   :outertype: Selection

   Возвращает квалифицированное имя формы :java:ref:`Name <ru.bitec.gs.automation.client.ui.Name>`.

   :return: Квалифицированное имя.

getRepresentation
^^^^^^^^^^^^^^^^^

.. java:method:: public String getRepresentation()
   :outertype: Selection

   Возвращает отображение.

   :return: отображение.

layout
^^^^^^

.. java:method:: public Layout layout()
   :outertype: Selection

locate
^^^^^^

.. java:method:: public Object locate(Map<String, Object> propertyMap)
   :outertype: Selection

   .. versionadded:: 1.1.0

   Метод, упрощающий написание вызова вида ``selection.executeJexl("selection.locate(asScala({'id': 353L}), asScala([...]))");``.
   Собственно, именно такой вызов этот метод и делает.

   :param propertyMap: простая карта параметров.
   :return: результат

locate
^^^^^^

.. java:method:: public Object locate(Map<String, Object> propertyMap, Selection.LocateOption[] locateOptions)
   :outertype: Selection

   .. versionadded:: 1.1.0

   Метод, упрощающий написание вызова вида ``selection.executeJexl("selection.locate(asScala({'id': 353L}), asScala([new ru.bitec.app.gtk.gl.selection.locateoption.Up(), ...]))");``.
   Собственно, именно такой вызов этот метод и делает, с учетом переданных :java:ref:`Selection.LocateOption <ru.bitec.gs.automation.client.ui.Selection.LocateOption>`[].

   :param propertyMap: простая карта параметров.
   :param locateOptions: массив опций для selection.locate
   :return: результат

locateOptionArrayToString
^^^^^^^^^^^^^^^^^^^^^^^^^

.. java:method:: protected static String locateOptionArrayToString(Selection.LocateOption[] locateOptions)
   :outertype: Selection

   Конструирование строки опций для запроса вида "selection.locate"

   :param locateOptions: массив опций
   :return: строка

toString
^^^^^^^^

.. java:method:: @Override public String toString()
   :outertype: Selection

wait
^^^^

.. java:method:: public static Selection wait(AbstractUiElement parent, String name)
   :outertype: Selection

   .. versionadded:: 1.1.0

   Метод ожидает появления на dom-модели первого html-элемента, соответствующего выборке с именем `name` и отображением "Default", во множестве
   дочерних html-элементов элемента `parent`.

   :param parent: родительский html-элемент
   :param name: имя выборки
   :return: Выборка

wait
^^^^

.. java:method:: public static Selection wait(AbstractUiElement parent, String name, String representation)
   :outertype: Selection

   .. versionadded:: 1.1.0

   Метод ожидает появления на dom-модели первого html-элемента, соответствующего выборке с именем `name` и отображением `representation`, во множестве
   дочерних html-элементов элемента `parent`.

   :param parent: родительский html-элемент
   :param name: имя выборки
   :param representation: отображение
   :return: Выборка

wait
^^^^

.. java:method:: static Selection wait(AbstractUiElement parent, Name name)
   :outertype: Selection

   .. versionadded:: 1.1.0

   Метод ожидает появления на dom-модели первого html-элемента, соответствующего выборке с именем и отображением указанным в `name`, во множестве
   дочерних html-элементов элемента `parent`.

   :param parent: родительский html-элемент
   :param name: имя и отображение выборки
   :return: Выборка

wait
^^^^

.. java:method:: public static Selection wait(AbstractUiElement parent, Name name, Duration duration)
   :outertype: Selection

   .. versionadded:: 1.1.0

   Метод ожидает появления на dom-модели первого html-элемента, соответствующего выборке с именем и отображением указанным в `name`, во множестве
   дочерних html-элементов элемента `parent`.

   :param parent: родительский html-элемент
   :param name: имя и отображение выборки
   :param duration: длительность ожидания
   :return: Выборка

waitBySimpleName
^^^^^^^^^^^^^^^^

.. java:method:: static Selection waitBySimpleName(AbstractUiElement parent, Name name)
   :outertype: Selection

   .. versionadded:: 1.1.0

   Метод ожидает появления на dom-модели первого html-элемента, соответствующего выборке с именем, завершающимся :java:ref:`Name.getSimpleName() <ru.bitec.gs.automation.client.ui.Name.getSimpleName()>`,
   и отображением :java:ref:`Name.getRepresentation() <ru.bitec.gs.automation.client.ui.Name.getRepresentation()>`,
   во множестве дочерних html-элементов элемента `parent`.

   Метод относится к системным и не вынесен в public намеренно. Не полные имена могут быть только у главных
   выборок приложений.

   :param parent: родительский html-элемент
   :param name: Краткое имя и отображение выборки
   :return: Выборка

waitBySimpleName
^^^^^^^^^^^^^^^^

.. java:method:: static Selection waitBySimpleName(AbstractUiElement parent, Name name, Duration duration)
   :outertype: Selection

   .. versionadded:: 1.1.0

   Метод ожидает появления на dom-модели первого html-элемента, соответствующего выборке с именем, завершающимся :java:ref:`Name.getSimpleName() <ru.bitec.gs.automation.client.ui.Name.getSimpleName()>`,
   и отображением :java:ref:`Name.getRepresentation() <ru.bitec.gs.automation.client.ui.Name.getRepresentation()>`,
   во множестве дочерних html-элементов элемента `parent`.

   Метод относится к системным и не вынесен в public намеренно. Не полные имена могут быть только у главных
   выборок приложений.

   :param parent: родительский html-элемент
   :param name: Краткое имя и отображение выборки
   :param duration: Длительность ожидания
   :return: Выборка