JSHandle
JSHandle представляет собой объект JavaScript на странице. JSHandles могут быть созданы с помощью метода page.evaluate_handle().
- Sync
- Async
window_handle = page.evaluate_handle("window")
# ...
window_handle = await page.evaluate_handle("window")
# ...
JSHandle предотвращает сборку мусора для ссылочного объекта JavaScript, если только ссылка не будет удалена с помощью js_handle.dispose(). JSHandles автоматически удаляются, когда их исходный фрейм переходит на другую страницу или родительский контекст уничтожается.
Экземпляры JSHandle могут использоваться в качестве аргумента в методах page.eval_on_selector(), page.evaluate() и page.evaluate_handle().
Методы
dispose
Добавлено до версии v1.9Метод jsHandle.dispose
прекращает ссылку на элемент.
Использование
js_handle.dispose()
Возвращает
evaluate
Добавлено до версии v1.9Возвращает значение, возвращаемое expression.
Этот метод передает эту ссылку в качестве первого аргумента в expression.
Если expression возвращает Promise, то handle.evaluate
будет ожидать разрешения промиса и вернет его значение.
Использование
- Sync
- Async
tweet_handle = page.query_selector(".tweet .retweets")
assert tweet_handle.evaluate("node => node.innerText") == "10 retweets"
tweet_handle = await page.query_selector(".tweet .retweets")
assert await tweet_handle.evaluate("node => node.innerText") == "10 retweets"
Аргументы
-
JavaScript выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument (опционально)#Необязательный аргумент для передачи в expression.
Возвращает
evaluate_handle
Добавлено до версии v1.9Возвращает значение, возвращаемое expression в виде JSHandle.
Этот метод передает эту ссылку в качестве первого аргумента в expression.
Единственное отличие между jsHandle.evaluate
и jsHandle.evaluateHandle
заключается в том, что jsHandle.evaluateHandle
возвращает JSHandle.
Если функция, переданная в jsHandle.evaluateHandle
, возвращает Promise, то jsHandle.evaluateHandle
будет ожидать разрешения промиса и вернет его значение.
Смотрите page.evaluate_handle() для получения более подробной информации.
Использование
js_handle.evaluate_handle(expression)
js_handle.evaluate_handle(expression, **kwargs)
Аргументы
-
JavaScript выражение для выполнения в контексте браузера. Если выражение оценивается как функция, функция автоматически вызывается.
-
arg
EvaluationArgument (опционально)#Необязательный аргумент для передачи в expression.
Возвращает
get_properties
Добавлено до версии v1.9Метод возвращает карту с именами собственных свойств в качестве ключей и экземплярами JSHandle для значений свойств.
Использование
- Sync
- Async
handle = page.evaluate_handle("({ window, document })")
properties = handle.get_properties()
window_handle = properties.get("window")
document_handle = properties.get("document")
handle.dispose()
handle = await page.evaluate_handle("({ window, document })")
properties = await handle.get_properties()
window_handle = properties.get("window")
document_handle = properties.get("document")
await handle.dispose()
Возвращает
get_property
Добавлено до версии v1.9Извлекает одно свойство из ссылочного объекта.
Использование
js_handle.get_property(property_name)
Аргументы
Возвращает
json_value
Добавлено до версии v1.9Возвращает JSON представление объекта. Если у объекта есть функция toJSON
, она не будет вызвана.
Метод вернет пустой JSON объект, если ссылочный объект не может быть преобразован в строку. Он вызовет ошибку, если объект имеет циклические ссылки.
Использование
js_handle.json_value()
Возвращает
Свойства
as_element
Добавлено до версии v1.9Возвращает либо null
, либо сам объект, если объект является экземпляром ElementHandle.
Использование
js_handle.as_element()
Возвращает