Перейти к основному содержимому

JSHandle

JSHandle представляет собой объект JavaScript на странице. JSHandles могут быть созданы с помощью метода Page.evaluateHandle().

JSHandle windowHandle = page.evaluateHandle("() => window");
// ...

JSHandle предотвращает сборку мусора для ссылочного объекта JavaScript, если только этот объект не освобожден с помощью JSHandle.dispose(). JSHandles автоматически освобождаются, когда их исходный фрейм переходит на другую страницу или родительский контекст уничтожается.

Экземпляры JSHandle могут использоваться в качестве аргумента в методах Page.evalOnSelector(), Page.evaluate() и Page.evaluateHandle().


Методы

asElement

Добавлено до версии v1.9 jsHandle.asElement

Возвращает либо null, либо сам объектный дескриптор, если объектный дескриптор является экземпляром ElementHandle.

Использование

JSHandle.asElement();

Возвращает


dispose

Добавлено до версии v1.9 jsHandle.dispose

Метод jsHandle.dispose прекращает ссылку на дескриптор элемента.

Использование

JSHandle.dispose();

Возвращает


evaluate

Добавлено до версии v1.9 jsHandle.evaluate

Возвращает значение, возвращаемое expression.

Этот метод передает этот дескриптор в качестве первого аргумента в expression.

Если expression возвращает Promise, то handle.evaluate будет ожидать разрешения промиса и вернет его значение.

Использование

ElementHandle tweetHandle = page.querySelector(".tweet .retweets");
assertEquals("10 retweets", tweetHandle.evaluate("node => node.innerText"));

Аргументы

  • expression String#

    JavaScript выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.

  • arg EvaluationArgument (опционально)#

    Необязательный аргумент для передачи в expression.

Возвращает


evaluateHandle

Добавлено до версии v1.9 jsHandle.evaluateHandle

Возвращает значение, возвращаемое expression в виде JSHandle.

Этот метод передает этот дескриптор в качестве первого аргумента в expression.

Единственное отличие между jsHandle.evaluate и jsHandle.evaluateHandle заключается в том, что jsHandle.evaluateHandle возвращает JSHandle.

Если функция, переданная в jsHandle.evaluateHandle, возвращает Promise, то jsHandle.evaluateHandle будет ожидать разрешения промиса и вернет его значение.

Смотрите Page.evaluateHandle() для получения более подробной информации.

Использование

JSHandle.evaluateHandle(expression);
JSHandle.evaluateHandle(expression, arg);

Аргументы

  • expression String#

    JavaScript выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.

  • arg EvaluationArgument (опционально)#

    Необязательный аргумент для передачи в expression.

Возвращает


getProperties

Добавлено до версии v1.9 jsHandle.getProperties

Метод возвращает карту с именами собственных свойств в качестве ключей и экземплярами JSHandle для значений свойств.

Использование

JSHandle handle = page.evaluateHandle("() => ({ window, document })");
Map<String, JSHandle> properties = handle.getProperties();
JSHandle windowHandle = properties.get("window");
JSHandle documentHandle = properties.get("document");
handle.dispose();

Возвращает


getProperty

Добавлено до версии v1.9 jsHandle.getProperty

Извлекает одно свойство из ссылочного объекта.

Использование

JSHandle.getProperty(propertyName);

Аргументы

  • propertyName String#

    свойство для получения

Возвращает


jsonValue

Добавлено до версии v1.9 jsHandle.jsonValue

Возвращает JSON-представление объекта. Если у объекта есть функция toJSON, она не будет вызвана.

примечание

Метод вернет пустой JSON-объект, если ссылочный объект не может быть преобразован в строку. Он вызовет ошибку, если объект имеет циклические ссылки.

Использование

JSHandle.jsonValue();

Возвращает