Manages a browser session lifecycle.
A session owns:
- A transport connection
- A browser instance
- Multiple browser contexts
- Pages within those contexts
Example
{:ok, session} = Session.start_link(mode: :local, headless: true)
{:ok, page} = Session.new_page(session)
:ok = Session.goto(session, page, "https://example.com")
{:ok, html} = Session.content(session, page)
:ok = Session.close(session)
Summary
Functions
Returns a specification to start this module under a supervisor.
Click an element.
Close the entire session.
Close a page.
Get page HTML content.
Fill an input field.
Navigate to a URL.
Create a new browser context.
Create a new page in the default context.
Take a screenshot.
Start a new browser session.
Types
Functions
Returns a specification to start this module under a supervisor.
See Supervisor.
@spec click(GenServer.server(), String.t(), String.t(), keyword()) :: :ok | {:error, term()}
Click an element.
Options
:timeout- Click timeout in ms (default: 30000)
@spec close(GenServer.server()) :: :ok
Close the entire session.
@spec close_page(GenServer.server(), String.t()) :: :ok | {:error, term()}
Close a page.
@spec content(GenServer.server(), String.t()) :: {:ok, String.t()} | {:error, term()}
Get page HTML content.
@spec fill(GenServer.server(), String.t(), String.t(), String.t(), keyword()) :: :ok | {:error, term()}
Fill an input field.
Options
:timeout- Fill timeout in ms (default: 30000)
@spec goto(GenServer.server(), String.t(), String.t(), keyword()) :: :ok | {:error, term()}
Navigate to a URL.
Options
:timeout- Navigation timeout in ms (default: 30000):wait_until- When to consider navigation complete (:load, :domcontentloaded, :networkidle)
@spec new_context( GenServer.server(), keyword() ) :: {:ok, String.t()} | {:error, term()}
Create a new browser context.
Options
:viewport- Viewport dimensions%{width: 1920, height: 1080}:user_agent- Custom user agent string:locale- User locale (e.g., "en-US"):color_scheme- Color scheme preference (:light, :dark)
@spec new_page( GenServer.server(), keyword() ) :: {:ok, String.t()} | {:error, term()}
Create a new page in the default context.
Returns a page_id that can be used with other Session functions.
@spec screenshot(GenServer.server(), String.t(), keyword()) :: {:ok, binary()} | {:error, term()}
Take a screenshot.
Options
:full_page- Capture full scrollable page (default: false):omit_background- Omit background for transparent screenshots (default: false)
Start a new browser session.
Options
:mode-:local,:remote, or:auto(default::auto):ws_endpoint- WebSocket URL for remote mode:headless- Run browser in headless mode (default: true):browser_type-:chromium,:firefox, or:webkit(default::chromium):name- Optional name for the GenServer