Represents a DOM frame.
To understand frames, you can think of frames as <iframe>
elements. Just like iframes, frames can be nested, and when JavaScript is executed in a frame, the JavaScript does not affect frames inside the ambient frame the JavaScript executes in.
export declare abstract class Frame extends EventEmitter<FrameEvents>
Extends: EventEmitter<FrameEvents>
Frame lifecycles are controlled by three events that are all dispatched on the parent page:
The constructor for this class is marked as internal. Third-party code should not call the constructor directly or create subclasses that extend the Frame
class.
At any point in time, pages expose their current frame tree via the Page.mainFrame() and Frame.childFrames() methods.
An example of dumping frame tree:
import puppeteer from 'puppeteer';
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.google.com/chrome/browser/canary.html');
dumpFrameTree(page.mainFrame(), '');
await browser.close();
function dumpFrameTree(frame, indent) {
console.log(indent + frame.url());
for (const child of frame.childFrames()) {
dumpFrameTree(child, indent + ' ');
}
}
})();
An example of getting text from an iframe element:
const frames = page.frames();
let frame = null;
for (const currentFrame of frames) {
const frameElement = await currentFrame.frameElement();
const name = await frameElement.evaluate(el => el.getAttribute('name'));
if (name === 'myframe') {
frame = currentFrame;
break;
}
}
if (frame) {
const text = await frame.$eval('.selector', element => element.textContent);
console.log(text);
} else {
console.error('Frame with name "myframe" not found.');
}
Property | Modifiers | Type | Description |
---|---|---|---|
detached | `readonly` | boolean |
Method | Modifiers | Description |
---|---|---|
[$(selector)](./puppeteer.frame._.md) | Queries the frame for an element matching the given selector. | |
[$$(selector, options)](./puppeteer.frame.__.md) | Queries the frame for all elements matching the given selector. | |
[$$eval(selector, pageFunction, args)](./puppeteer.frame.__eval.md) | Runs the given function on an array of elements matching the given selector in the frame. If the given function returns a promise, then this method will wait till the promise resolves. | |
[$eval(selector, pageFunction, args)](./puppeteer.frame._eval.md) | Runs the given function on the first element matching the given selector in the frame. If the given function returns a promise, then this method will wait till the promise resolves. | |
[addScriptTag(options)](./puppeteer.frame.addscripttag.md) | Adds a ` |