JsLibrary

public final class JsLibrary

Added in version 1.2.1.

Единая точка вызова функций JS-библиотеки gs-automation (window.GsAutomation).

Библиотека самодостаточна: инъецируется лениво, при первом обращении к call(org.openqa.selenium.JavascriptExecutor, java.lang.String, java.lang.Object...)/callAsync(org.openqa.selenium.JavascriptExecutor, java.lang.String, java.lang.Object...) для конкретного JavascriptExecutor, без участия внешнего кода (например, тестового окружения). На местах использования не остаётся ни строки JS-синтаксиса — только путь до функции в namespace библиотеки и аргументы вызова.

Methods

call

public static Object call(JavascriptExecutor js, String path, Object... args)

Вызвать синхронную функцию библиотеки (executeScript).

Parameters:
  • js – исполнитель javascript, обычно драйвер браузера

  • path – путь до функции в namespace window.GsAutomation, например "dom.isConnected"

  • args – аргументы вызова

Throws:
Returns:

результат, возвращённый функцией

callAsync

public static Object callAsync(JavascriptExecutor js, String path, Object... args)

Вызвать асинхронную функцию библиотеки (executeAsyncScript). Функция библиотеки обязана принимать callback последним параметром и вызывать его ровно один раз с результатом.

Parameters:
  • js – исполнитель javascript, обычно драйвер браузера

  • path – путь до функции в namespace window.GsAutomation, например "label.wait"

  • args – аргументы вызова (без callback — он подставляется автоматически)

Throws:
Returns:

результат, переданный функцией в callback

injectScript

public static void injectScript(JavascriptExecutor js, Class<?> resourceAnchor, String resourceName)

Внедрить в текущую страницу произвольный скрипт из ресурсов — в обход namespace/call-by-path API библиотеки. Предназначен для скриптов, не являющихся частью window.GsAutomation (например, ресурсов тестового окружения), которые нужно внедрить в определённый момент (после логина, после ожидания главной формы и т.п.), а не лениво при первом вызове call(org.openqa.selenium.JavascriptExecutor, java.lang.String, java.lang.Object...)/callAsync(org.openqa.selenium.JavascriptExecutor, java.lang.String, java.lang.Object...).

Идемпотентность вызывающая сторона обеспечивает сама (например, вызовом ровно один раз за жизненный цикл теста) — метод не кэширует факт инъекции.

Parameters:
  • js – исполнитель javascript, обычно драйвер браузера

  • resourceAnchor – класс, относительно пакета которого разрешается resourceName

  • resourceName – имя файла ресурса со скриптом

Throws:
  • AutomationException – если ресурс не найден или не удалось его прочитать