diff --git a/docs/api/puppeteer.frame.md b/docs/api/puppeteer.frame.md index 288d934cd38af..a69bb57dbe2a2 100644 --- a/docs/api/puppeteer.frame.md +++ b/docs/api/puppeteer.frame.md @@ -80,6 +80,7 @@ console.log(text); | [isDetached()](./puppeteer.frame.isdetached.md) | | | | [isOOPFrame()](./puppeteer.frame.isoopframe.md) | | | | [name()](./puppeteer.frame.name.md) | | | +| [page()](./puppeteer.frame.page.md) | | | | [parentFrame()](./puppeteer.frame.parentframe.md) | | | | [select(selector, values)](./puppeteer.frame.select.md) | | Triggers a change and input event once all the provided options have been selected. | | [setContent(html, options)](./puppeteer.frame.setcontent.md) | | Set the content of the frame. | diff --git a/docs/api/puppeteer.frame.page.md b/docs/api/puppeteer.frame.page.md new file mode 100644 index 0000000000000..201dd209ff57f --- /dev/null +++ b/docs/api/puppeteer.frame.page.md @@ -0,0 +1,19 @@ +--- +sidebar_label: Frame.page +--- + +# Frame.page() method + +**Signature:** + +```typescript +class Frame { + page(): Page; +} +``` + +**Returns:** + +[Page](./puppeteer.page.md) + +a page associated with the frame. diff --git a/src/common/FrameManager.ts b/src/common/FrameManager.ts index 647360c0558e7..0312ac294f04c 100644 --- a/src/common/FrameManager.ts +++ b/src/common/FrameManager.ts @@ -769,6 +769,13 @@ export class Frame { ); } + /** + * @returns a page associated with the frame. + */ + page(): Page { + return this._frameManager.page(); + } + /** * @remarks * diff --git a/test/src/frame.spec.ts b/test/src/frame.spec.ts index e7804d23ffab9..6bc21aa53a407 100644 --- a/test/src/frame.spec.ts +++ b/test/src/frame.spec.ts @@ -116,6 +116,15 @@ describe('Frame specs', function () { }); }); + describe('Frame.page', function () { + it('should retrieve the page from a frame', async () => { + const {page, server} = getTestState(); + await page.goto(server.EMPTY_PAGE); + const mainFrame = page.mainFrame(); + expect(mainFrame.page()).toEqual(page); + }); + }); + describe('Frame Management', function () { itFailsFirefox('should handle nested frames', async () => { const {page, server} = getTestState();