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(())
}Structs§
- Browser
- Browser represents a browser instance.
- Browser
Context - BrowserContext represents an isolated browser session.
- Browser
Context Options - Options for creating a new browser context.
- Browser
Type - BrowserType represents a browser engine (Chromium, Firefox, or WebKit).
- Check
Options - Check options
- Click
Options - Click options
- Element
Handle - ElementHandle represents a DOM element in the page.
- File
Payload - FilePayload represents a file for advanced file uploads.
- Fill
Options - Fill options
- Fulfill
Options - Options for fulfilling a route with a custom response.
- Geolocation
- Geolocation coordinates.
- Goto
Options - Options for page.goto() and page.reload()
- Hover
Options - Hover options
- Launch
Options - Options for launching a browser
- Locator
- Locator represents a way to find element(s) on the page at any given moment.
- Page
- Page represents a web page within a browser context.
- Playwright
- Playwright is the root object that provides access to browser types.
- Press
Options - Press options
- Response
- Response from navigation operations
- Route
- Route represents a network route handler.
- Screenshot
Clip - Clip region for screenshot
- Screenshot
Options - Screenshot options
- Select
Options - Select options
- Viewport
- Viewport dimensions for browser context.
Enums§
- Error
- Errors that can occur when using playwright-core
- Screenshot
Type - Screenshot image format
- Select
Option - Select option variant
- Wait
Until - When to consider navigation succeeded
Functions§
- expect
- Creates an expectation for a locator with auto-retry behavior.
Type Aliases§
- Result
- Result type alias for playwright-core operations