diff --git a/lib/playwright/frame.ex b/lib/playwright/frame.ex index 8d526c8..e635054 100644 --- a/lib/playwright/frame.ex +++ b/lib/playwright/frame.ex @@ -127,8 +127,16 @@ defmodule Playwright.Frame do # --- - # @spec content(Frame.t()) :: binary() - # def content(frame) + @spec content(Frame.t()) :: binary() | {:error, term()} + def content(%Frame{session: session} = frame) do + case Channel.post(session, {:guid, frame.guid}, :content) do + {:error, error} -> + {:error, error} + + content -> + content + end + end # --- diff --git a/lib/playwright/page.ex b/lib/playwright/page.ex index b8b34f6..0d27158 100644 --- a/lib/playwright/page.ex +++ b/lib/playwright/page.ex @@ -243,6 +243,11 @@ defmodule Playwright.Page do Channel.find(session, {:guid, page.parent.guid}) end + @spec content(t()) :: binary() | {:error, term()} + def content(%Page{} = page) do + main_frame(page) |> Frame.content() + end + @doc """ A shortcut for the main frame's `Playwright.Frame.dblclick/3`. """ diff --git a/test/api/page_test.exs b/test/api/page_test.exs index bdae066..d539f4d 100644 --- a/test/api/page_test.exs +++ b/test/api/page_test.exs @@ -441,7 +441,7 @@ defmodule Playwright.PageTest do end end - describe "Page.test_content/2" do + describe "Page.text_content/2" do test "retrieves content", %{assets: assets, page: page} do page |> Page.goto(assets.prefix <> "/dom.html") @@ -450,6 +450,16 @@ defmodule Playwright.PageTest do end end + describe "Page.content/0" do + test "retrieves the page content", %{assets: assets, page: page} do + page + |> Page.goto(assets.prefix <> "/dom.html") + + assert Page.content(page) =~ + ~r// + end + end + describe "Page.title/1" do test "retrieves the title text", %{assets: assets, page: page} do page