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();
Возвращает
dispose
Добавлено до версии 1.9Метод jsHandle.dispose прекращает ссылаться на дескриптор элемента.
Использование
await jsHandle.dispose();
Возвращает
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'); Аргументы
-
pageFunctionfunction | stringФункция, выполняемая в контексте страницы.
-
argEvaluationArgument (необязательно)Необязательный аргумент, передаваемый функции pageFunction.
-
optionsObject (необязательно)-
exposeFunctionsboolean (необязательно)Если задано значение
true, функции, переданные внутри arg, становятся доступными на странице, и их можно вызывать из функции страницы. Вызов такой функции возвращает Promise с результатом её выполнения. Внутри каждая функция становится доступной через page.exposeFunction(), поэтому технически она доступна из всех фреймов и миров страницы. Доступные функции удаляются при переходе на страницу верхнего уровня. По умолчанию используетсяfalse; в этом случае функции нельзя сериализовать, и при передаче такой функции возникает ошибка.
-
Возвращает
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);
Аргументы
-
pageFunctionfunction | stringФункция, выполняемая в контексте страницы.
-
argEvaluationArgument (необязательно)Необязательный аргумент, передаваемый функции pageFunction.
-
optionsObject (необязательно)-
exposeFunctionsboolean (необязательно)Если задано значение
true, функции, переданные внутри arg, становятся доступными на странице, и их можно вызывать из функции страницы. Вызов такой функции возвращает Promise с результатом её выполнения. Внутри каждая функция становится доступной через page.exposeFunction(), поэтому технически она доступна из всех фреймов и миров страницы. Доступные функции удаляются при переходе на страницу верхнего уровня. По умолчанию используетсяfalse; в этом случае функции нельзя сериализовать, и при передаче такой функции возникает ошибка.
-
Возвращает
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(); Возвращает
getProperty
Добавлено до версии 1.9Получает отдельное свойство объекта, на который ссылается дескриптор.
Использование
await jsHandle.getProperty(propertyName);
Аргументы
-
propertyNamestringсвойство, которое нужно получить
Возвращает
jsonValue
Добавлено до версии 1.9Возвращает JSON-представление объекта. Если у объекта есть функция toJSON, она не будет вызвана.
примечаниеМетод возвращает пустой объект JSON, если объект, на который ссылается дескриптор, нельзя сериализовать. Если объект содержит циклические ссылки, возникает ошибка.
Использование
await jsHandle.jsonValue();
Возвращает
© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-jshandle