Spec-Zone.ru › Playwright

JSHandle

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

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

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

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

Методы​

asElement​

Добавлено до версии 1.9

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

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

jsHandle.asElement();

Возвращает

  • null | ElementHandle

dispose​

Добавлено до версии 1.9

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

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

await jsHandle.dispose();

Возвращает

  • Promise<void>

evaluate​

Добавлено до версии 1.9

Возвращает значение, возвращённое функцией 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 (необязательно)

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

Возвращает

  • Promise<Serializable>

evaluateHandle​

Добавлено до версии 1.9

Возвращает значение, возвращённое функцией 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 (необязательно)

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

Возвращает

  • Promise<JSHandle>

getProperties​

Добавлено до версии 1.9

Метод возвращает карту, в которой ключами являются имена собственных свойств, а значениями — экземпляры 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();

Возвращает

  • Promise<Map<string, JSHandle>>

getProperty​

Добавлено до версии 1.9

Получает отдельное свойство объекта, на который ссылается дескриптор.

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

await jsHandle.getProperty(propertyName);

Аргументы

  • propertyName string

    свойство, которое нужно получить

Возвращает

  • Promise<JSHandle>

jsonValue​

Добавлено до версии 1.9

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

примечание

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

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

await jsHandle.jsonValue();

Возвращает

  • Promise<Serializable>

© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-jshandle

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API