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Возвращает либо null
, либо сам объект, если объект является экземпляром ElementHandle.
Использование
JsHandle.AsElement();
Возвращает
DisposeAsync
Добавлено до версии v1.9Метод jsHandle.dispose
прекращает ссылку на элемент.
Использование
await JsHandle.DisposeAsync();
Возвращает
EvaluateAsync
Добавлено до версии v1.9Возвращает значение, возвращаемое выражением.
Этот метод передает этот объект в качестве первого аргумента выражению.
Если выражение возвращает Promise, то handle.evaluate
будет ожидать разрешения промиса и вернет его значение.
Использование
var tweetHandle = await page.QuerySelectorAsync(".tweet .retweets");
Assert.AreEqual("10 retweets", await tweetHandle.EvaluateAsync("node => node.innerText"));
Аргументы
-
JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument? (опционально)#Необязательный аргумент для передачи в выражение.
Возвращает
- [object]#
EvaluateHandleAsync
Добавлено до версии v1.9Возвращает значение, возвращаемое выражением в виде JSHandle.
Этот метод передает этот объект в качестве первого аргумента выражению.
Единственное отличие между jsHandle.evaluate
и jsHandle.evaluateHandle
заключается в том, что jsHandle.evaluateHandle
возвращает JSHandle.
Если функция, переданная в jsHandle.evaluateHandle
, возвращает Promise, то jsHandle.evaluateHandle
будет ожидать разрешения промиса и вернет его значение.
Смотрите Page.EvaluateHandleAsync() для получения более подробной информации.
Использование
await JsHandle.EvaluateHandleAsync(expression, arg);
Аргументы
-
JavaScript-выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument? (опционально)#Необязательный аргумент для передачи в выражение.
Возвращает
GetPropertiesAsync
Добавлено до версии v1.9Метод возвращает карту с именами собственных свойств в качестве ключей и экземплярами 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Извлекает одно свойство из ссылочного объекта.
Использование
await JsHandle.GetPropertyAsync(propertyName);
Аргументы
Возвращает
JsonValueAsync
Добавлено до версии v1.9Возвращает JSON-представление объекта. Если у объекта есть функция toJSON
, она не будет вызвана.
Метод вернет пустой JSON-объект, если ссылочный объект не может быть преобразован в строку. Он вызовет ошибку, если объект содержит циклические ссылки.
Использование
await JsHandle.JsonValueAsync();
Возвращает
- [object]#