.. java:import:: org.openqa.selenium JavascriptExecutor JsLibrary ========= .. java:package:: ru.bitec.gs.automation.client.js :noindex: .. java:type:: public final class JsLibrary .. versionadded:: 1.2.1 Единая точка вызова функций JS-библиотеки gs-automation (``window.GsAutomation``\ ). Библиотека самодостаточна: инъецируется лениво, при первом обращении к :java:ref:`call(org.openqa.selenium.JavascriptExecutor, java.lang.String, java.lang.Object...) `/:java:ref:`callAsync(org.openqa.selenium.JavascriptExecutor, java.lang.String, java.lang.Object...) ` для конкретного :java:ref:`JavascriptExecutor `, без участия внешнего кода (например, тестового окружения). На местах использования не остаётся ни строки JS-синтаксиса — только путь до функции в namespace библиотеки и аргументы вызова. Methods ------- call ^^^^ .. java:method:: public static Object call(JavascriptExecutor js, String path, Object... args) throws AutomationException :outertype: JsLibrary Вызвать синхронную функцию библиотеки (``executeScript``\ ). :param js: исполнитель javascript, обычно драйвер браузера :param path: путь до функции в namespace ``window.GsAutomation``\ , например ``"dom.isConnected"`` :param args: аргументы вызова :throws AutomationException: если ``path`` имеет недопустимый формат :return: результат, возвращённый функцией callAsync ^^^^^^^^^ .. java:method:: public static Object callAsync(JavascriptExecutor js, String path, Object... args) throws AutomationException :outertype: JsLibrary Вызвать асинхронную функцию библиотеки (``executeAsyncScript``\ ). Функция библиотеки обязана принимать callback последним параметром и вызывать его ровно один раз с результатом. :param js: исполнитель javascript, обычно драйвер браузера :param path: путь до функции в namespace ``window.GsAutomation``\ , например ``"label.wait"`` :param args: аргументы вызова (без callback — он подставляется автоматически) :throws AutomationException: если ``path`` имеет недопустимый формат :return: результат, переданный функцией в callback injectScript ^^^^^^^^^^^^ .. java:method:: public static void injectScript(JavascriptExecutor js, Class resourceAnchor, String resourceName) throws AutomationException :outertype: JsLibrary Внедрить в текущую страницу произвольный скрипт из ресурсов — в обход namespace/call-by-path API библиотеки. Предназначен для скриптов, не являющихся частью ``window.GsAutomation`` (например, ресурсов тестового окружения), которые нужно внедрить в определённый момент (после логина, после ожидания главной формы и т.п.), а не лениво при первом вызове :java:ref:`call(org.openqa.selenium.JavascriptExecutor, java.lang.String, java.lang.Object...) `/:java:ref:`callAsync(org.openqa.selenium.JavascriptExecutor, java.lang.String, java.lang.Object...) `. Идемпотентность вызывающая сторона обеспечивает сама (например, вызовом ровно один раз за жизненный цикл теста) — метод не кэширует факт инъекции. :param js: исполнитель javascript, обычно драйвер браузера :param resourceAnchor: класс, относительно пакета которого разрешается ``resourceName`` :param resourceName: имя файла ресурса со скриптом :throws AutomationException: если ресурс не найден или не удалось его прочитать