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

JSHandle

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

const windowHandle = await page.evaluateHandle(() => window);
// ...

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

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


Методы​

asElement​

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

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

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

jsHandle.asElement();

Возвращает


dispose​

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

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

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

await jsHandle.dispose();

Возвращает


evaluate​

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

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

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

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

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

const tweetHandle = await page.$('.tweet .retweets');
expect(await tweetHandle.evaluate(node => node.innerText)).toBe('10 retweets');

Аргументы

  • pageFunction function | string#

    Функция, которая будет выполнена в контексте страницы.

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

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

  • options Object (необязательно)
    • exposeFunctions boolean (необязательно) Добавлено в: v1.62#

      Если установлено значение true, функции, переданные внутри arg, становятся доступны на странице и могут вызываться из функции, выполняемой в контексте страницы. Вызов такой функции возвращает Promise с результатом её выполнения. На внутреннем уровне каждая функция предоставляется через page.exposeFunction(), поэтому технически она доступна из всех фреймов страницы. Предоставленные функции удаляются при навигации фрейма верхнего уровня. По умолчанию используется значение false: в этом случае функции не подлежат сериализации, и попытка передать функцию приводит к ошибке.

Возвращает


evaluateHandle​

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

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

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

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

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

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

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

await jsHandle.evaluateHandle(pageFunction);
await jsHandle.evaluateHandle(pageFunction, arg, options);

Аргументы

  • pageFunction function | string#

    Функция, которая будет выполнена в контексте страницы.

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

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

  • options Object (необязательно)
    • exposeFunctions boolean (необязательно) Добавлено в: v1.62#

      Если установлено значение true, функции, переданные внутри arg, становятся доступны на странице и могут вызываться из функции, выполняемой в контексте страницы. Вызов такой функции возвращает Promise с результатом её выполнения. Внутренне каждая функция предоставляется через page.exposeFunction(), поэтому технически она доступна из всех фреймов страницы. Предоставленные функции удаляются при навигации фрейма верхнего уровня. По умолчанию используется значение false: в этом случае функции не подлежат сериализации, и передача функции приводит к ошибке.

Возвращает


getProperties​

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

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

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

const handle = await page.evaluateHandle(() => ({ window, document }));
const properties = await handle.getProperties();
const windowHandle = properties.get('window');
const documentHandle = properties.get('document');
await handle.dispose();

Возвращает


getProperty​

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

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

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

await jsHandle.getProperty(propertyName);

Аргументы

  • propertyName string#

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

Возвращает


jsonValue​

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

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

примечание

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

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

await jsHandle.jsonValue();

Возвращает