mirror of
https://github.com/puppeteer/puppeteer
synced 2024-06-14 14:02:48 +00:00
fix!: internalize execution context (#8844)
This commit is contained in:
parent
d070a73c46
commit
2f33237d04
@ -7,7 +7,7 @@ sidebar_label: API
|
|||||||
## Classes
|
## Classes
|
||||||
|
|
||||||
| Class | Description |
|
| Class | Description |
|
||||||
| --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| [Accessibility](./puppeteer.accessibility.md) | The Accessibility class provides methods for inspecting Chromium's accessibility tree. The accessibility tree is used by assistive technology such as [screen readers](https://en.wikipedia.org/wiki/Screen_reader) or [switches](https://en.wikipedia.org/wiki/Switch_access). |
|
| [Accessibility](./puppeteer.accessibility.md) | The Accessibility class provides methods for inspecting Chromium's accessibility tree. The accessibility tree is used by assistive technology such as [screen readers](https://en.wikipedia.org/wiki/Screen_reader) or [switches](https://en.wikipedia.org/wiki/Switch_access). |
|
||||||
| [Browser](./puppeteer.browser.md) | A Browser is created when Puppeteer connects to a Chromium instance, either through [PuppeteerNode.launch()](./puppeteer.puppeteernode.launch.md) or [Puppeteer.connect()](./puppeteer.puppeteer.connect.md). |
|
| [Browser](./puppeteer.browser.md) | A Browser is created when Puppeteer connects to a Chromium instance, either through [PuppeteerNode.launch()](./puppeteer.puppeteernode.launch.md) or [Puppeteer.connect()](./puppeteer.puppeteer.connect.md). |
|
||||||
| [BrowserContext](./puppeteer.browsercontext.md) | BrowserContexts provide a way to operate multiple independent browser sessions. When a browser is launched, it has a single BrowserContext used by default. The method [Browser.newPage](./puppeteer.browser.newpage.md) creates a page in the default browser context. |
|
| [BrowserContext](./puppeteer.browsercontext.md) | BrowserContexts provide a way to operate multiple independent browser sessions. When a browser is launched, it has a single BrowserContext used by default. The method [Browser.newPage](./puppeteer.browser.newpage.md) creates a page in the default browser context. |
|
||||||
@ -21,7 +21,6 @@ sidebar_label: API
|
|||||||
| [Dialog](./puppeteer.dialog.md) | Dialog instances are dispatched by the [Page](./puppeteer.page.md) via the <code>dialog</code> event. |
|
| [Dialog](./puppeteer.dialog.md) | Dialog instances are dispatched by the [Page](./puppeteer.page.md) via the <code>dialog</code> event. |
|
||||||
| [ElementHandle](./puppeteer.elementhandle.md) | ElementHandle represents an in-page DOM element. |
|
| [ElementHandle](./puppeteer.elementhandle.md) | ElementHandle represents an in-page DOM element. |
|
||||||
| [EventEmitter](./puppeteer.eventemitter.md) | The EventEmitter class that many Puppeteer classes extend. |
|
| [EventEmitter](./puppeteer.eventemitter.md) | The EventEmitter class that many Puppeteer classes extend. |
|
||||||
| [ExecutionContext](./puppeteer.executioncontext.md) | |
|
|
||||||
| [FileChooser](./puppeteer.filechooser.md) | File choosers let you react to the page requesting for a file. |
|
| [FileChooser](./puppeteer.filechooser.md) | File choosers let you react to the page requesting for a file. |
|
||||||
| [Frame](./puppeteer.frame.md) | <p>Represents a DOM frame.</p><p>To understand frames, you can think of frames as <code><iframe></code> elements. Just like iframes, frames can be nested, and when JavaScript is executed in a frame, the JavaScript does not effect frames inside the ambient frame the JavaScript executes in.</p> |
|
| [Frame](./puppeteer.frame.md) | <p>Represents a DOM frame.</p><p>To understand frames, you can think of frames as <code><iframe></code> elements. Just like iframes, frames can be nested, and when JavaScript is executed in a frame, the JavaScript does not effect frames inside the ambient frame the JavaScript executes in.</p> |
|
||||||
| [HTTPRequest](./puppeteer.httprequest.md) | Represents an HTTP request sent by a page. |
|
| [HTTPRequest](./puppeteer.httprequest.md) | Represents an HTTP request sent by a page. |
|
||||||
|
@ -1,67 +0,0 @@
|
|||||||
---
|
|
||||||
sidebar_label: ExecutionContext.evaluate
|
|
||||||
---
|
|
||||||
|
|
||||||
# ExecutionContext.evaluate() method
|
|
||||||
|
|
||||||
Evaluates the given function.
|
|
||||||
|
|
||||||
**Signature:**
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
class ExecutionContext {
|
|
||||||
evaluate<
|
|
||||||
Params extends unknown[],
|
|
||||||
Func extends EvaluateFunc<Params> = EvaluateFunc<Params>
|
|
||||||
>(
|
|
||||||
pageFunction: Func | string,
|
|
||||||
...args: Params
|
|
||||||
): Promise<Awaited<ReturnType<Func>>>;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Parameters
|
|
||||||
|
|
||||||
| Parameter | Type | Description |
|
|
||||||
| ------------ | -------------- | ----------------------------------------------- |
|
|
||||||
| pageFunction | Func \| string | The function to evaluate. |
|
|
||||||
| args | Params | Additional arguments to pass into the function. |
|
|
||||||
|
|
||||||
**Returns:**
|
|
||||||
|
|
||||||
Promise<Awaited<ReturnType<Func>>>
|
|
||||||
|
|
||||||
The result of evaluating the function. If the result is an object, a vanilla object containing the serializable properties of the result is returned.
|
|
||||||
|
|
||||||
## Example 1
|
|
||||||
|
|
||||||
```ts
|
|
||||||
const executionContext = await page.mainFrame().executionContext();
|
|
||||||
const result = await executionContext.evaluate(() => Promise.resolve(8 * 7))* ;
|
|
||||||
console.log(result); // prints "56"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Example 2
|
|
||||||
|
|
||||||
A string can also be passed in instead of a function:
|
|
||||||
|
|
||||||
```ts
|
|
||||||
console.log(await executionContext.evaluate('1 + 2')); // prints "3"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Example 3
|
|
||||||
|
|
||||||
Handles can also be passed as `args`. They resolve to their referenced object:
|
|
||||||
|
|
||||||
```ts
|
|
||||||
const oneHandle = await executionContext.evaluateHandle(() => 1);
|
|
||||||
const twoHandle = await executionContext.evaluateHandle(() => 2);
|
|
||||||
const result = await executionContext.evaluate(
|
|
||||||
(a, b) => a + b,
|
|
||||||
oneHandle,
|
|
||||||
twoHandle
|
|
||||||
);
|
|
||||||
await oneHandle.dispose();
|
|
||||||
await twoHandle.dispose();
|
|
||||||
console.log(result); // prints '3'.
|
|
||||||
```
|
|
@ -1,75 +0,0 @@
|
|||||||
---
|
|
||||||
sidebar_label: ExecutionContext.evaluateHandle
|
|
||||||
---
|
|
||||||
|
|
||||||
# ExecutionContext.evaluateHandle() method
|
|
||||||
|
|
||||||
Evaluates the given function.
|
|
||||||
|
|
||||||
Unlike [evaluate](./puppeteer.executioncontext.evaluate.md), this method returns a handle to the result of the function.
|
|
||||||
|
|
||||||
This method may be better suited if the object cannot be serialized (e.g. `Map`) and requires further manipulation.
|
|
||||||
|
|
||||||
**Signature:**
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
class ExecutionContext {
|
|
||||||
evaluateHandle<
|
|
||||||
Params extends unknown[],
|
|
||||||
Func extends EvaluateFunc<Params> = EvaluateFunc<Params>
|
|
||||||
>(
|
|
||||||
pageFunction: Func | string,
|
|
||||||
...args: Params
|
|
||||||
): Promise<HandleFor<Awaited<ReturnType<Func>>>>;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Parameters
|
|
||||||
|
|
||||||
| Parameter | Type | Description |
|
|
||||||
| ------------ | -------------- | ----------------------------------------------- |
|
|
||||||
| pageFunction | Func \| string | The function to evaluate. |
|
|
||||||
| args | Params | Additional arguments to pass into the function. |
|
|
||||||
|
|
||||||
**Returns:**
|
|
||||||
|
|
||||||
Promise<[HandleFor](./puppeteer.handlefor.md)<Awaited<ReturnType<Func>>>>
|
|
||||||
|
|
||||||
A [handle](./puppeteer.jshandle.md) to the result of evaluating the function. If the result is a `Node`, then this will return an [element handle](./puppeteer.elementhandle.md).
|
|
||||||
|
|
||||||
## Example 1
|
|
||||||
|
|
||||||
```ts
|
|
||||||
const context = await page.mainFrame().executionContext();
|
|
||||||
const handle: JSHandle<typeof globalThis> = await context.evaluateHandle(() =>
|
|
||||||
Promise.resolve(self)
|
|
||||||
);
|
|
||||||
```
|
|
||||||
|
|
||||||
## Example 2
|
|
||||||
|
|
||||||
A string can also be passed in instead of a function.
|
|
||||||
|
|
||||||
```ts
|
|
||||||
const handle: JSHandle<number> = await context.evaluateHandle('1 + 2');
|
|
||||||
```
|
|
||||||
|
|
||||||
## Example 3
|
|
||||||
|
|
||||||
Handles can also be passed as `args`. They resolve to their referenced object:
|
|
||||||
|
|
||||||
```ts
|
|
||||||
const bodyHandle: ElementHandle<HTMLBodyElement> = await context.evaluateHandle(
|
|
||||||
() => {
|
|
||||||
return document.body;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
const stringHandle: JSHandle<string> = await context.evaluateHandle(
|
|
||||||
body => body.innerHTML,
|
|
||||||
body
|
|
||||||
);
|
|
||||||
console.log(await stringHandle.jsonValue()); // prints body's innerHTML
|
|
||||||
// Always dispose your garbage! :)
|
|
||||||
await bodyHandle.dispose();
|
|
||||||
await stringHandle.dispose();
|
|
||||||
```
|
|
@ -1,23 +0,0 @@
|
|||||||
---
|
|
||||||
sidebar_label: ExecutionContext.frame
|
|
||||||
---
|
|
||||||
|
|
||||||
# ExecutionContext.frame() method
|
|
||||||
|
|
||||||
**Signature:**
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
class ExecutionContext {
|
|
||||||
frame(): Frame | null;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**Returns:**
|
|
||||||
|
|
||||||
[Frame](./puppeteer.frame.md) \| null
|
|
||||||
|
|
||||||
The frame associated with this execution context.
|
|
||||||
|
|
||||||
## Remarks
|
|
||||||
|
|
||||||
Not every execution context is associated with a frame. For example, [workers](./puppeteer.webworker.md) have execution contexts that are not associated with frames.
|
|
@ -1,38 +0,0 @@
|
|||||||
---
|
|
||||||
sidebar_label: ExecutionContext
|
|
||||||
---
|
|
||||||
|
|
||||||
# ExecutionContext class
|
|
||||||
|
|
||||||
> Warning: This API is now obsolete.
|
|
||||||
>
|
|
||||||
> Do not use directly.
|
|
||||||
>
|
|
||||||
> Represents a context for JavaScript execution.
|
|
||||||
|
|
||||||
**Signature:**
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
export declare class ExecutionContext
|
|
||||||
```
|
|
||||||
|
|
||||||
## Remarks
|
|
||||||
|
|
||||||
Besides pages, execution contexts can be found in [workers](./puppeteer.webworker.md).
|
|
||||||
|
|
||||||
The constructor for this class is marked as internal. Third-party code should not call the constructor directly or create subclasses that extend the `ExecutionContext` class.
|
|
||||||
|
|
||||||
## Example
|
|
||||||
|
|
||||||
A [Page](./puppeteer.page.md) can have several execution contexts:
|
|
||||||
|
|
||||||
- Each [Frame](./puppeteer.frame.md) of a [page](./puppeteer.page.md) has a "default" execution context that is always created after frame is attached to DOM. This context is returned by the [Frame.executionContext()](./puppeteer.frame.executioncontext.md) method. - Each [Chrome extensions](https://developer.chrome.com/extensions) creates additional execution contexts to isolate their code.
|
|
||||||
|
|
||||||
## Methods
|
|
||||||
|
|
||||||
| Method | Modifiers | Description |
|
|
||||||
| ------------------------------------------------------------------------------------ | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
||||||
| [evaluate(pageFunction, args)](./puppeteer.executioncontext.evaluate.md) | | Evaluates the given function. |
|
|
||||||
| [evaluateHandle(pageFunction, args)](./puppeteer.executioncontext.evaluatehandle.md) | | <p>Evaluates the given function.</p><p>Unlike [evaluate](./puppeteer.executioncontext.evaluate.md), this method returns a handle to the result of the function.</p><p>This method may be better suited if the object cannot be serialized (e.g. <code>Map</code>) and requires further manipulation.</p> |
|
|
||||||
| [frame()](./puppeteer.executioncontext.frame.md) | | |
|
|
||||||
| [queryObjects(prototypeHandle)](./puppeteer.executioncontext.queryobjects.md) | | Iterates through the JavaScript heap and finds all the objects with the given prototype. |
|
|
@ -1,44 +0,0 @@
|
|||||||
---
|
|
||||||
sidebar_label: ExecutionContext.queryObjects
|
|
||||||
---
|
|
||||||
|
|
||||||
# ExecutionContext.queryObjects() method
|
|
||||||
|
|
||||||
Iterates through the JavaScript heap and finds all the objects with the given prototype.
|
|
||||||
|
|
||||||
**Signature:**
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
class ExecutionContext {
|
|
||||||
queryObjects<Prototype>(
|
|
||||||
prototypeHandle: JSHandle<Prototype>
|
|
||||||
): Promise<HandleFor<Prototype[]>>;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Parameters
|
|
||||||
|
|
||||||
| Parameter | Type | Description |
|
|
||||||
| --------------- | ---------------------------------------------------- | -------------------------------- |
|
|
||||||
| prototypeHandle | [JSHandle](./puppeteer.jshandle.md)<Prototype> | a handle to the object prototype |
|
|
||||||
|
|
||||||
**Returns:**
|
|
||||||
|
|
||||||
Promise<[HandleFor](./puppeteer.handlefor.md)<Prototype\[\]>>
|
|
||||||
|
|
||||||
A handle to an array of objects with the given prototype.
|
|
||||||
|
|
||||||
## Example
|
|
||||||
|
|
||||||
```ts
|
|
||||||
// Create a Map object
|
|
||||||
await page.evaluate(() => (window.map = new Map()));
|
|
||||||
// Get a handle to the Map object prototype
|
|
||||||
const mapPrototype = await page.evaluateHandle(() => Map.prototype);
|
|
||||||
// Query all map instances into an array
|
|
||||||
const mapInstances = await page.queryObjects(mapPrototype);
|
|
||||||
// Count amount of map objects in heap
|
|
||||||
const count = await page.evaluate(maps => maps.length, mapInstances);
|
|
||||||
await mapInstances.dispose();
|
|
||||||
await mapPrototype.dispose();
|
|
||||||
```
|
|
@ -1,23 +0,0 @@
|
|||||||
---
|
|
||||||
sidebar_label: Frame.executionContext
|
|
||||||
---
|
|
||||||
|
|
||||||
# Frame.executionContext() method
|
|
||||||
|
|
||||||
> Warning: This API is now obsolete.
|
|
||||||
>
|
|
||||||
> Do not use the execution context directly.
|
|
||||||
|
|
||||||
**Signature:**
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
class Frame {
|
|
||||||
executionContext(): Promise<ExecutionContext>;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**Returns:**
|
|
||||||
|
|
||||||
Promise<[ExecutionContext](./puppeteer.executioncontext.md)>
|
|
||||||
|
|
||||||
a promise that resolves to the frame's default execution context.
|
|
@ -75,7 +75,6 @@ console.log(text);
|
|||||||
| [content()](./puppeteer.frame.content.md) | | |
|
| [content()](./puppeteer.frame.content.md) | | |
|
||||||
| [evaluate(pageFunction, args)](./puppeteer.frame.evaluate.md) | | Behaves identically to [Page.evaluate()](./puppeteer.page.evaluate.md) except it's run within the the context of this frame. |
|
| [evaluate(pageFunction, args)](./puppeteer.frame.evaluate.md) | | Behaves identically to [Page.evaluate()](./puppeteer.page.evaluate.md) except it's run within the the context of this frame. |
|
||||||
| [evaluateHandle(pageFunction, args)](./puppeteer.frame.evaluatehandle.md) | | Behaves identically to [Page.evaluateHandle()](./puppeteer.page.evaluatehandle.md) except it's run within the context of this frame. |
|
| [evaluateHandle(pageFunction, args)](./puppeteer.frame.evaluatehandle.md) | | Behaves identically to [Page.evaluateHandle()](./puppeteer.page.evaluatehandle.md) except it's run within the context of this frame. |
|
||||||
| [executionContext()](./puppeteer.frame.executioncontext.md) | | |
|
|
||||||
| [focus(selector)](./puppeteer.frame.focus.md) | | Focuses the first element that matches the <code>selector</code>. |
|
| [focus(selector)](./puppeteer.frame.focus.md) | | Focuses the first element that matches the <code>selector</code>. |
|
||||||
| [goto(url, options)](./puppeteer.frame.goto.md) | | Navigates a frame to the given url. |
|
| [goto(url, options)](./puppeteer.frame.goto.md) | | Navigates a frame to the given url. |
|
||||||
| [hover(selector)](./puppeteer.frame.hover.md) | | Hovers the pointer over the center of the first element that matches the <code>selector</code>. |
|
| [hover(selector)](./puppeteer.frame.hover.md) | | Hovers the pointer over the center of the first element that matches the <code>selector</code>. |
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
---
|
|
||||||
sidebar_label: JSHandle.executionContext
|
|
||||||
---
|
|
||||||
|
|
||||||
# JSHandle.executionContext() method
|
|
||||||
|
|
||||||
**Signature:**
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
class JSHandle {
|
|
||||||
executionContext(): ExecutionContext;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**Returns:**
|
|
||||||
|
|
||||||
[ExecutionContext](./puppeteer.executioncontext.md)
|
|
||||||
|
|
||||||
The execution context the handle belongs to.
|
|
@ -40,7 +40,6 @@ const windowHandle = await page.evaluateHandle(() => window);
|
|||||||
| [dispose()](./puppeteer.jshandle.dispose.md) | | Releases the object referenced by the handle for garbage collection. |
|
| [dispose()](./puppeteer.jshandle.dispose.md) | | Releases the object referenced by the handle for garbage collection. |
|
||||||
| [evaluate(pageFunction, args)](./puppeteer.jshandle.evaluate.md) | | Evaluates the given function with the current handle as its first argument. |
|
| [evaluate(pageFunction, args)](./puppeteer.jshandle.evaluate.md) | | Evaluates the given function with the current handle as its first argument. |
|
||||||
| [evaluateHandle(pageFunction, args)](./puppeteer.jshandle.evaluatehandle.md) | | Evaluates the given function with the current handle as its first argument. |
|
| [evaluateHandle(pageFunction, args)](./puppeteer.jshandle.evaluatehandle.md) | | Evaluates the given function with the current handle as its first argument. |
|
||||||
| [executionContext()](./puppeteer.jshandle.executioncontext.md) | | |
|
|
||||||
| [getProperties()](./puppeteer.jshandle.getproperties.md) | | Gets a map of handles representing the properties of the current handle. |
|
| [getProperties()](./puppeteer.jshandle.getproperties.md) | | Gets a map of handles representing the properties of the current handle. |
|
||||||
| [getProperty(propertyName)](./puppeteer.jshandle.getproperty.md) | | Fetches a single property from the referenced object. |
|
| [getProperty(propertyName)](./puppeteer.jshandle.getproperty.md) | | Fetches a single property from the referenced object. |
|
||||||
| [getProperty(propertyName)](./puppeteer.jshandle.getproperty_1.md) | | |
|
| [getProperty(propertyName)](./puppeteer.jshandle.getproperty_1.md) | | |
|
||||||
|
@ -28,10 +28,6 @@ Promise<[JSHandle](./puppeteer.jshandle.md)<Prototype\[\]>>
|
|||||||
|
|
||||||
Promise which resolves to a handle to an array of objects with this prototype.
|
Promise which resolves to a handle to an array of objects with this prototype.
|
||||||
|
|
||||||
## Remarks
|
|
||||||
|
|
||||||
Shortcut for [page.mainFrame().executionContext().queryObjects(prototypeHandle)](./puppeteer.executioncontext.queryobjects.md).
|
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
---
|
|
||||||
sidebar_label: WebWorker.executionContext
|
|
||||||
---
|
|
||||||
|
|
||||||
# WebWorker.executionContext() method
|
|
||||||
|
|
||||||
> Warning: This API is now obsolete.
|
|
||||||
>
|
|
||||||
> Do not use directly.
|
|
||||||
|
|
||||||
**Signature:**
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
class WebWorker {
|
|
||||||
executionContext(): Promise<ExecutionContext>;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**Returns:**
|
|
||||||
|
|
||||||
Promise<[ExecutionContext](./puppeteer.executioncontext.md)>
|
|
||||||
|
|
||||||
The ExecutionContext the web worker runs in.
|
|
@ -42,5 +42,4 @@ for (const worker of page.workers()) {
|
|||||||
| ----------------------------------------------------------------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| ----------------------------------------------------------------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| [evaluate(pageFunction, args)](./puppeteer.webworker.evaluate.md) | | If the function passed to the <code>worker.evaluate</code> returns a Promise, then <code>worker.evaluate</code> would wait for the promise to resolve and return its value. If the function passed to the <code>worker.evaluate</code> returns a non-serializable value, then <code>worker.evaluate</code> resolves to <code>undefined</code>. DevTools Protocol also supports transferring some additional values that are not serializable by <code>JSON</code>: <code>-0</code>, <code>NaN</code>, <code>Infinity</code>, <code>-Infinity</code>, and bigint literals. Shortcut for <code>await worker.executionContext()).evaluate(pageFunction, ...args)</code>. |
|
| [evaluate(pageFunction, args)](./puppeteer.webworker.evaluate.md) | | If the function passed to the <code>worker.evaluate</code> returns a Promise, then <code>worker.evaluate</code> would wait for the promise to resolve and return its value. If the function passed to the <code>worker.evaluate</code> returns a non-serializable value, then <code>worker.evaluate</code> resolves to <code>undefined</code>. DevTools Protocol also supports transferring some additional values that are not serializable by <code>JSON</code>: <code>-0</code>, <code>NaN</code>, <code>Infinity</code>, <code>-Infinity</code>, and bigint literals. Shortcut for <code>await worker.executionContext()).evaluate(pageFunction, ...args)</code>. |
|
||||||
| [evaluateHandle(pageFunction, args)](./puppeteer.webworker.evaluatehandle.md) | | The only difference between <code>worker.evaluate</code> and <code>worker.evaluateHandle</code> is that <code>worker.evaluateHandle</code> returns in-page object (JSHandle). If the function passed to the <code>worker.evaluateHandle</code> returns a <code>Promise</code>, then <code>worker.evaluateHandle</code> would wait for the promise to resolve and return its value. Shortcut for <code>await worker.executionContext()).evaluateHandle(pageFunction, ...args)</code> |
|
| [evaluateHandle(pageFunction, args)](./puppeteer.webworker.evaluatehandle.md) | | The only difference between <code>worker.evaluate</code> and <code>worker.evaluateHandle</code> is that <code>worker.evaluateHandle</code> returns in-page object (JSHandle). If the function passed to the <code>worker.evaluateHandle</code> returns a <code>Promise</code>, then <code>worker.evaluateHandle</code> would wait for the promise to resolve and return its value. Shortcut for <code>await worker.executionContext()).evaluateHandle(pageFunction, ...args)</code> |
|
||||||
| [executionContext()](./puppeteer.webworker.executioncontext.md) | | |
|
|
||||||
| [url()](./puppeteer.webworker.url.md) | | |
|
| [url()](./puppeteer.webworker.url.md) | | |
|
||||||
|
@ -35,8 +35,6 @@ export const EVALUATION_SCRIPT_URL = 'pptr://__puppeteer_evaluation_script__';
|
|||||||
const SOURCE_URL_REGEX = /^[\040\t]*\/\/[@#] sourceURL=\s*(\S*?)\s*$/m;
|
const SOURCE_URL_REGEX = /^[\040\t]*\/\/[@#] sourceURL=\s*(\S*?)\s*$/m;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated Do not use directly.
|
|
||||||
*
|
|
||||||
* Represents a context for JavaScript execution.
|
* Represents a context for JavaScript execution.
|
||||||
*
|
*
|
||||||
* @example
|
* @example
|
||||||
@ -55,6 +53,8 @@ const SOURCE_URL_REGEX = /^[\040\t]*\/\/[@#] sourceURL=\s*(\S*?)\s*$/m;
|
|||||||
* @remarks
|
* @remarks
|
||||||
* Besides pages, execution contexts can be found in
|
* Besides pages, execution contexts can be found in
|
||||||
* {@link WebWorker | workers}.
|
* {@link WebWorker | workers}.
|
||||||
|
*
|
||||||
|
* @internal
|
||||||
*/
|
*/
|
||||||
export class ExecutionContext {
|
export class ExecutionContext {
|
||||||
/**
|
/**
|
||||||
|
@ -398,9 +398,7 @@ export class Frame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated Do not use the execution context directly.
|
* @internal
|
||||||
*
|
|
||||||
* @returns a promise that resolves to the frame's default execution context.
|
|
||||||
*/
|
*/
|
||||||
executionContext(): Promise<ExecutionContext> {
|
executionContext(): Promise<ExecutionContext> {
|
||||||
return this.worlds[MAIN_WORLD].executionContext();
|
return this.worlds[MAIN_WORLD].executionContext();
|
||||||
|
@ -108,7 +108,7 @@ export class JSHandle<T = unknown> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @returns The execution context the handle belongs to.
|
* @internal
|
||||||
*/
|
*/
|
||||||
executionContext(): ExecutionContext {
|
executionContext(): ExecutionContext {
|
||||||
return this.#context;
|
return this.#context;
|
||||||
|
@ -1136,11 +1136,6 @@ export class Page extends EventEmitter {
|
|||||||
* This method iterates the JavaScript heap and finds all objects with the
|
* This method iterates the JavaScript heap and finds all objects with the
|
||||||
* given prototype.
|
* given prototype.
|
||||||
*
|
*
|
||||||
* @remarks
|
|
||||||
* Shortcut for
|
|
||||||
* {@link ExecutionContext.queryObjects |
|
|
||||||
* page.mainFrame().executionContext().queryObjects(prototypeHandle)}.
|
|
||||||
*
|
|
||||||
* @example
|
* @example
|
||||||
*
|
*
|
||||||
* ```ts
|
* ```ts
|
||||||
@ -1164,7 +1159,16 @@ export class Page extends EventEmitter {
|
|||||||
prototypeHandle: JSHandle<Prototype>
|
prototypeHandle: JSHandle<Prototype>
|
||||||
): Promise<JSHandle<Prototype[]>> {
|
): Promise<JSHandle<Prototype[]>> {
|
||||||
const context = await this.mainFrame().executionContext();
|
const context = await this.mainFrame().executionContext();
|
||||||
return context.queryObjects(prototypeHandle);
|
assert(!prototypeHandle.disposed, 'Prototype JSHandle is disposed!');
|
||||||
|
const remoteObject = prototypeHandle.remoteObject();
|
||||||
|
assert(
|
||||||
|
remoteObject.objectId,
|
||||||
|
'Prototype JSHandle must not be referencing primitive value'
|
||||||
|
);
|
||||||
|
const response = await context._client.send('Runtime.queryObjects', {
|
||||||
|
prototypeObjectId: remoteObject.objectId,
|
||||||
|
});
|
||||||
|
return createJSHandle(context, response.objects) as HandleFor<Prototype[]>;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -107,9 +107,7 @@ export class WebWorker extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated Do not use directly.
|
* @internal
|
||||||
*
|
|
||||||
* @returns The ExecutionContext the web worker runs in.
|
|
||||||
*/
|
*/
|
||||||
async executionContext(): Promise<ExecutionContext> {
|
async executionContext(): Promise<ExecutionContext> {
|
||||||
return this.#executionContext;
|
return this.#executionContext;
|
||||||
|
Loading…
Reference in New Issue
Block a user