Expand description
playwright: High-level Rust bindings for Microsoft Playwright
This crate provides the public API for browser automation using Playwright.
§Examples
§Basic Navigation and Interaction
ⓘ
use playwright_rs::{Playwright, SelectOption};
#[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?;
// Navigate using data URL for self-contained test
let _ = page.goto(
"data:text/html,<html><body>\
<h1 id='title'>Welcome</h1>\
<button id='btn' onclick='this.textContent=\"Clicked\"'>Click me</button>\
</body></html>",
None
).await;
// Query elements with locators
let heading = page.locator("#title").await;
let text = heading.text_content().await?;
assert_eq!(text, Some("Welcome".to_string()));
// Click button and verify result
let button = page.locator("#btn").await;
button.click(None).await?;
let button_text = button.text_content().await?;
assert_eq!(button_text, Some("Clicked".to_string()));
browser.close().await?;
Ok(())
}§Form Interaction
ⓘ
use playwright_rs::{Playwright, SelectOption};
#[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?;
// Create form with data URL
let _ = page.goto(
"data:text/html,<html><body>\
<input type='text' id='name' />\
<input type='checkbox' id='agree' />\
<select id='country'>\
<option value='us'>USA</option>\
<option value='uk'>UK</option>\
<option value='ca'>Canada</option>\
</select>\
</body></html>",
None
).await;
// Fill text input
let name = page.locator("#name").await;
name.fill("John Doe", None).await?;
assert_eq!(name.input_value(None).await?, "John Doe");
// Check checkbox
let checkbox = page.locator("#agree").await;
checkbox.set_checked(true, None).await?;
assert!(checkbox.is_checked().await?);
// Select option
let select = page.locator("#country").await;
select.select_option("uk", None).await?;
assert_eq!(select.input_value(None).await?, "uk");
browser.close().await?;
Ok(())
}§Element Screenshots
ⓘ
use playwright_rs::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?;
// Create element to screenshot
let _ = page.goto(
"data:text/html,<html><body>\
<div id='box' style='width:100px;height:100px;background:blue'></div>\
</body></html>",
None
).await;
// Take screenshot of specific element
let element = page.locator("#box").await;
let screenshot = element.screenshot(None).await?;
assert!(!screenshot.is_empty());
browser.close().await?;
Ok(())
}§Assertions (expect API)
ⓘ
use playwright_rs::{expect, 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 _ = page.goto(
"data:text/html,<html><body>\
<button id='enabled'>Enabled</button>\
<button id='disabled' disabled>Disabled</button>\
<input type='checkbox' id='checked' checked />\
</body></html>",
None
).await;
// Assert button states with auto-retry
let enabled_btn = page.locator("#enabled").await;
expect(enabled_btn.clone()).to_be_enabled().await?;
let disabled_btn = page.locator("#disabled").await;
expect(disabled_btn).to_be_disabled().await?;
// Assert checkbox state
let checkbox = page.locator("#checked").await;
expect(checkbox).to_be_checked().await?;
browser.close().await?;
Ok(())
}Re-exports§
pub use protocol::Browser;pub use protocol::BrowserContext;pub use protocol::BrowserType;pub use protocol::HeaderEntry;pub use protocol::Page;pub use protocol::Playwright;pub use protocol::Response;pub use protocol::Request;pub use protocol::ResourceTiming;pub use protocol::AriaRole;pub use protocol::BoundingBox;pub use protocol::ElementHandle;pub use protocol::FilterOptions;pub use protocol::GetByRoleOptions;pub use protocol::Locator;pub use protocol::GotoOptions;pub use protocol::WaitUntil;pub use protocol::CheckOptions;pub use protocol::ClickOptions;pub use protocol::DragToOptions;pub use protocol::FillOptions;pub use protocol::HoverOptions;pub use protocol::PressOptions;pub use protocol::PressSequentiallyOptions;pub use protocol::SelectOptions;pub use protocol::TapOptions;pub use protocol::WaitForOptions;pub use protocol::WaitForState;pub use protocol::Position;pub use protocol::FilePayload;pub use protocol::SelectOption;pub use protocol::ScreenshotClip;pub use protocol::ScreenshotOptions;pub use protocol::ScreenshotType;pub use protocol::AddScriptTagOptions;pub use protocol::ColorScheme;pub use protocol::EmulateMediaOptions;pub use protocol::ForcedColors;pub use protocol::Media;pub use protocol::PdfMargin;pub use protocol::PdfOptions;pub use protocol::ReducedMotion;pub use protocol::BrowserContextOptions;pub use protocol::Cookie;pub use protocol::Geolocation;pub use protocol::LocalStorageItem;pub use protocol::Origin;pub use protocol::RecordHar;pub use protocol::RecordVideo;pub use protocol::StorageState;pub use protocol::Viewport;pub use protocol::FetchOptions;pub use protocol::FetchResponse;pub use protocol::FulfillOptions;pub use protocol::Route;pub use protocol::UnrouteBehavior;pub use api::ConnectOverCdpOptions;pub use api::LaunchOptions;
Modules§
Structs§
- Page
Expectation - Page-level expectation for screenshot assertions.
- Screenshot
Assertion Options - Options for screenshot assertions
- Screenshot
Assertion Options Builder - Builder for ScreenshotAssertionOptions
Enums§
- Animations
- Animation control for screenshots
- Error
- Errors that can occur when using playwright-core
Constants§
- DEFAULT_
TIMEOUT_ MS - Default timeout in milliseconds for Playwright operations.
- PLAYWRIGHT_
VERSION - Playwright server version bundled with this crate.
Functions§
- expect
- Creates an expectation for a locator with auto-retry behavior.
- expect_
page - Creates a page-level expectation for screenshot assertions.
Type Aliases§
- Result
- Result type alias for playwright-core operations