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

JSHandle

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

var windowHandle = await page.EvaluateHandleAsync("() => window");

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

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


Методы

AsElement

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

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

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

JsHandle.AsElement();

Возвращает


DisposeAsync

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

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

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

await JsHandle.DisposeAsync();

Возвращает


EvaluateAsync

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

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

Этот метод передает этот объект в качестве первого аргумента выражению.

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

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

var tweetHandle = await page.QuerySelectorAsync(".tweet .retweets");
Assert.AreEqual("10 retweets", await tweetHandle.EvaluateAsync("node => node.innerText"));

Аргументы

  • expression string#

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

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

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

Возвращает

  • [object]#

EvaluateHandleAsync

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

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

Этот метод передает этот объект в качестве первого аргумента выражению.

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

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

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

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

await JsHandle.EvaluateHandleAsync(expression, arg);

Аргументы

  • expression string#

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

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

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

Возвращает


GetPropertiesAsync

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

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

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

var handle = await page.EvaluateHandleAsync("() => ({ window, document }");
var properties = await handle.GetPropertiesAsync();
var windowHandle = properties["window"];
var documentHandle = properties["document"];
await handle.DisposeAsync();

Возвращает


GetPropertyAsync

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

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

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

await JsHandle.GetPropertyAsync(propertyName);

Аргументы

  • propertyName string#

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

Возвращает


JsonValueAsync

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

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

примечание

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

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

await JsHandle.JsonValueAsync();

Возвращает

  • [object]#