pub struct FileChooser { /* private fields */ }Expand description
Represents a file chooser dialog triggered by an <input type="file"> element.
FileChooser objects are dispatched by the "fileChooser" event on
Page via on_filechooser
and expect_file_chooser.
§Usage
Use set_files to satisfy the file chooser by providing
file paths. The files are read from disk and sent to the browser.
§Example
use playwright_rs::protocol::Playwright;
use std::path::PathBuf;
#[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?;
page.set_content(
r#"<input type="file" id="f" />"#,
None
).await?;
// Set up the waiter BEFORE the action that triggers the file chooser
let waiter = page.expect_file_chooser(None).await?;
// Click the file input to open the chooser
page.locator("#f").await.click(None).await?;
// Resolve the waiter and set files
let chooser = waiter.wait().await?;
chooser.set_files(&[PathBuf::from("/tmp/test.txt")]).await?;
browser.close().await?;
Ok(())
}Implementations§
Source§impl FileChooser
impl FileChooser
Sourcepub fn page(&self) -> &Page
pub fn page(&self) -> &Page
Returns the page that owns this file chooser.
See: https://playwright.dev/docs/api/class-filechooser#file-chooser-page
Sourcepub fn element(&self) -> Arc<ElementHandle>
pub fn element(&self) -> Arc<ElementHandle>
Returns the <input type="file"> element that triggered this chooser.
See: https://playwright.dev/docs/api/class-filechooser#file-chooser-element
Sourcepub fn is_multiple(&self) -> bool
pub fn is_multiple(&self) -> bool
Returns true if the file input accepts multiple files.
This reflects the multiple attribute on the underlying <input type="file">.
See: https://playwright.dev/docs/api/class-filechooser#file-chooser-is-multiple
Sourcepub async fn set_files(&self, files: &[PathBuf]) -> Result<()>
pub async fn set_files(&self, files: &[PathBuf]) -> Result<()>
Sets files on the associated <input type="file"> element.
Reads each file from disk, encodes as base64, and sends a setInputFiles
RPC directly on the ElementHandle channel. This satisfies the file chooser
dialog without requiring any OS-level file picker interaction.
§Arguments
files- Slice of file paths to set on the input element
§Errors
Returns error if:
- Any file cannot be read from disk
- The RPC call to the browser fails
§Example
let waiter = page.expect_file_chooser(None).await?;
page.locator("input[type=file]").await.click(None).await?;
let chooser = waiter.wait().await?;
chooser.set_files(&[PathBuf::from("/tmp/upload.txt")]).await?;See: https://playwright.dev/docs/api/class-filechooser#file-chooser-set-files
Trait Implementations§
Source§impl Clone for FileChooser
impl Clone for FileChooser
Source§fn clone(&self) -> FileChooser
fn clone(&self) -> FileChooser
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more