JSHandle
JSHandle представляет собой объект JavaScript на странице. JSHandles могут быть созданы с помощью метода Page.evaluateHandle().
JSHandle windowHandle = page.evaluateHandle("() => window");
// ...
JSHandle предотвращает сборку мусора для ссылочного объекта JavaScript, если только этот объект не освобожден с помощью JSHandle.dispose(). JSHandles автоматически освобождаются, когда их исходный фрейм переходит на другую страницу или родительский контекст уничтожается.
Экземпляры JSHandle могут использоваться в качестве аргумента в методах Page.evalOnSelector(), Page.evaluate() и Page.evaluateHandle().
Методы
asElement
Добавлено до версии v1.9Возвращает либо null
, либо сам объектный дескриптор, если объектный дескриптор является экземпляром ElementHandle.
Использование
JSHandle.asElement();
Возвращает
dispose
Добавлено до версии v1.9Метод jsHandle.dispose
прекращает ссылку на дескриптор элемента.
Использование
JSHandle.dispose();
Возвращает
evaluate
Добавлено до версии v1.9Возвращает значение, возвращаемое expression.
Этот метод передает этот дескриптор в качестве первого аргумента в expression.
Если expression возвращает Promise, то handle.evaluate
будет ожидать разрешения промиса и вернет его значение.
Использование
ElementHandle tweetHandle = page.querySelector(".tweet .retweets");
assertEquals("10 retweets", tweetHandle.evaluate("node => node.innerText"));
Аргументы
-
JavaScript выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument (опционально)#Необязательный аргумент для передачи в expression.
Возвращает
evaluateHandle
Добавлено до версии v1.9Возвращает значение, возвращаемое expression в виде JSHandle.
Этот метод передает этот дескриптор в качестве первого аргумента в expression.
Единственное отличие между jsHandle.evaluate
и jsHandle.evaluateHandle
заключается в том, что jsHandle.evaluateHandle
возвращает JSHandle.
Если функция, переданная в jsHandle.evaluateHandle
, возвращает Promise, то jsHandle.evaluateHandle
будет ожидать разрешения промиса и вернет его значение.
Смотрите Page.evaluateHandle() для получения более подробной информации.
Использование
JSHandle.evaluateHandle(expression);
JSHandle.evaluateHandle(expression, arg);
Аргументы
-
JavaScript выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument (опционально)#Необязательный аргумент для передачи в expression.
Возвращает
getProperties
Добавлено до версии v1.9Метод возвращает карту с именами собственных свойств в качестве ключей и экземплярами JSHandle для значений свойств.
Использование
JSHandle handle = page.evaluateHandle("() => ({ window, document })");
Map<String, JSHandle> properties = handle.getProperties();
JSHandle windowHandle = properties.get("window");
JSHandle documentHandle = properties.get("document");
handle.dispose();
Возвращает
getProperty
Добавлено до версии v1.9Извлекает одно свойство из ссылочного объекта.
Использование
JSHandle.getProperty(propertyName);
Аргументы
Возвращает
jsonValue
Добавлено до версии v1.9Возвращает JSON-представление объекта. Если у объекта есть функция toJSON
, она не будет вызвана.
Метод вернет пустой JSON-объект, если ссылочный объект не может быть преобразован в строку. Он вызовет ошибку, если объект имеет циклические ссылки.
Использование
JSHandle.jsonValue();
Возвращает