Skip to main content

Frame

Struct Frame 

Source
pub struct Frame { /* private fields */ }
Expand description

Frame represents a frame within a page.

Every page has a main frame, and pages can have additional child frames (iframes). Frame is where navigation, selector queries, and DOM operations actually happen.

In Playwright’s architecture, Page delegates navigation and interaction methods to Frame.

See: https://playwright.dev/docs/api/class-frame

Implementations§

Source§

impl Frame

Source

pub fn new( parent: Arc<dyn ChannelOwner>, type_name: String, guid: Arc<str>, initializer: Value, ) -> Result<Self>

Creates a new Frame from protocol initialization

This is called by the object factory when the server sends a __create__ message for a Frame object.

Source

pub fn url(&self) -> String

Returns the current URL of the frame.

This returns the last committed URL. Initially, frames are at “about:blank”.

See: https://playwright.dev/docs/api/class-frame#frame-url

Source

pub async fn goto( &self, url: &str, options: Option<GotoOptions>, ) -> Result<Option<Response>>

Navigates the frame to the specified URL.

This is the actual protocol method for navigation. Page.goto() delegates to this.

Returns None when navigating to URLs that don’t produce responses (e.g., data URLs, about:blank). This matches Playwright’s behavior across all language bindings.

§Arguments
  • url - The URL to navigate to
  • options - Optional navigation options (timeout, wait_until)

See: https://playwright.dev/docs/api/class-frame#frame-goto

Source

pub async fn title(&self) -> Result<String>

Source

pub async fn content(&self) -> Result<String>

Returns the full HTML content of the frame, including the DOCTYPE.

See: https://playwright.dev/docs/api/class-frame#frame-content

Source

pub async fn set_content( &self, html: &str, options: Option<GotoOptions>, ) -> Result<()>

Source

pub async fn wait_for_load_state(&self, state: Option<WaitUntil>) -> Result<()>

Waits for the required load state to be reached.

Playwright’s protocol doesn’t expose waitForLoadState as a server-side command — it’s implemented client-side using lifecycle events. We implement it by polling document.readyState via JavaScript evaluation.

See: https://playwright.dev/docs/api/class-frame#frame-wait-for-load-state

Source

pub async fn wait_for_url( &self, url: &str, options: Option<GotoOptions>, ) -> Result<()>

Waits for the frame to navigate to a URL matching the given string or glob pattern.

Playwright’s protocol doesn’t expose waitForURL as a server-side command — it’s implemented client-side. We implement it by polling window.location.href.

See: https://playwright.dev/docs/api/class-frame#frame-wait-for-url

Source

pub async fn query_selector( &self, selector: &str, ) -> Result<Option<Arc<ElementHandle>>>

Returns the first element matching the selector, or None if not found.

See: https://playwright.dev/docs/api/class-frame#frame-query-selector

Source

pub async fn query_selector_all( &self, selector: &str, ) -> Result<Vec<Arc<ElementHandle>>>

Returns all elements matching the selector.

See: https://playwright.dev/docs/api/class-frame#frame-query-selector-all

Source

pub async fn evaluate<T: Serialize>( &self, expression: &str, arg: Option<&T>, ) -> Result<Value>

Evaluates a JavaScript expression in the frame context with optional arguments.

Executes the provided JavaScript expression within the frame’s context and returns the result. The return value must be JSON-serializable.

§Arguments
  • expression - JavaScript code to evaluate
  • arg - Optional argument to pass to the expression (must implement Serialize)
§Returns

The result as a serde_json::Value

§Example
use serde_json::json;
use playwright_rs::protocol::Playwright;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let playwright = Playwright::launch().await?;
    let browser = playwright.chromium().launch().await?;
    let page = browser.new_page().await?;
    let frame = page.main_frame().await?;

    // Evaluate without arguments
    let result = frame.evaluate::<()>("1 + 1", None).await?;

    // Evaluate with argument
    let arg = json!({"x": 5, "y": 3});
    let result = frame.evaluate::<serde_json::Value>("(arg) => arg.x + arg.y", Some(&arg)).await?;
    assert_eq!(result, json!(8));
    Ok(())
}

See: https://playwright.dev/docs/api/class-frame#frame-evaluate

Source

pub async fn add_style_tag( &self, options: AddStyleTagOptions, ) -> Result<Arc<ElementHandle>>

Adds a <style> tag into the page with the desired content.

§Arguments
  • options - Style tag options (content, url, or path)

At least one of content, url, or path must be specified.

§Example
use playwright_rs::protocol::AddStyleTagOptions;

// With inline CSS
frame.add_style_tag(
    AddStyleTagOptions::builder()
        .content("body { background-color: red; }")
        .build()
).await?;

// With URL
frame.add_style_tag(
    AddStyleTagOptions::builder()
        .url("https://example.com/style.css")
        .build()
).await?;

See: https://playwright.dev/docs/api/class-frame#frame-add-style-tag

Source

pub async fn add_script_tag( &self, options: AddScriptTagOptions, ) -> Result<Arc<ElementHandle>>

Adds a <script> tag into the frame with the desired content.

§Arguments
  • options - Script tag options (content, url, or path)

At least one of content, url, or path must be specified.

See: https://playwright.dev/docs/api/class-frame#frame-add-script-tag

Trait Implementations§

Source§

impl Clone for Frame

Source§

fn clone(&self) -> Frame

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Frame

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl !Freeze for Frame

§

impl !RefUnwindSafe for Frame

§

impl Send for Frame

§

impl Sync for Frame

§

impl Unpin for Frame

§

impl UnsafeUnpin for Frame

§

impl !UnwindSafe for Frame

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more