From af08c5c90380c853e8257a51298bfed4b0635779 Mon Sep 17 00:00:00 2001 From: Alex Rudenko Date: Mon, 11 Jul 2022 21:06:35 +0200 Subject: [PATCH] feat: expose the page getter on Frame (#8657) * feat: expose the page getter on Frame Closes #8654 * test: add a test --- docs/api/puppeteer.frame.md | 1 + docs/api/puppeteer.frame.page.md | 19 +++++++++++++++++++ src/common/FrameManager.ts | 7 +++++++ test/src/frame.spec.ts | 9 +++++++++ 4 files changed, 36 insertions(+) create mode 100644 docs/api/puppeteer.frame.page.md 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();