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::Page;pub use protocol::Playwright;pub use protocol::Response;pub use protocol::ElementHandle;pub use protocol::Locator;pub use protocol::GotoOptions;pub use protocol::WaitUntil;pub use protocol::CheckOptions;pub use protocol::ClickOptions;pub use protocol::FillOptions;pub use protocol::HoverOptions;pub use protocol::PressOptions;pub use protocol::SelectOptions;pub use protocol::FilePayload;pub use protocol::SelectOption;pub use protocol::ScreenshotClip;pub use protocol::ScreenshotOptions;pub use protocol::ScreenshotType;pub use protocol::BrowserContextOptions;pub use protocol::Cookie;pub use protocol::Geolocation;pub use protocol::LocalStorageItem;pub use protocol::Origin;pub use protocol::StorageState;pub use protocol::Viewport;pub use protocol::FulfillOptions;pub use protocol::Route;pub use api::LaunchOptions;
Modules§
Enums§
- Error
- Errors that can occur when using playwright-core
Constants§
- DEFAULT_
TIMEOUT_ MS - Default timeout in milliseconds for Playwright operations.
Functions§
- expect
- Creates an expectation for a locator with auto-retry behavior.
Type Aliases§
- Result
- Result type alias for playwright-core operations