Skip to main content

browser_commander/
lib.rs

1//! Browser Commander - Universal Browser Automation Library
2//!
3//! A Rust library for browser automation that provides a unified API
4//! for different browser automation engines.
5//!
6//! # Features
7//!
8//! - Unified API across multiple browser engines
9//! - Built-in navigation safety handling
10//! - Element visibility and scroll management
11//! - Click, fill, and other interaction support with verification
12//! - Async/await support with Tokio
13//!
14//! # Example
15//!
16//! ```rust,no_run
17//! use browser_commander::browser::{launch_browser, LaunchOptions};
18//!
19//! #[tokio::main]
20//! async fn main() -> anyhow::Result<()> {
21//!     // Launch a browser
22//!     let options = LaunchOptions::chromiumoxide().headless(true);
23//!     let result = launch_browser(options).await?;
24//!
25//!     // The returned `page` is an `Arc<dyn EngineAdapter>` and can be
26//!     // passed to any of the crate's navigation / interaction helpers.
27//!     let page = result.page.as_ref();
28//!     page.goto("https://example.com").await?;
29//!     println!("Current URL: {}", page.url().await?);
30//!
31//!     Ok(())
32//! }
33//! ```
34//!
35//! # Modules
36//!
37//! - [`core`] - Core types and traits (constants, engine adapter, logger)
38//! - [`elements`] - Element operations (selectors, visibility, content)
39//! - [`interactions`] - User interactions (click, scroll, fill)
40//! - [`browser`] - Browser management (launcher, navigation)
41//! - [`utilities`] - General utilities (URL handling, wait operations)
42//! - [`high_level`] - High-level DRY utilities
43
44pub mod browser;
45pub mod core;
46pub mod elements;
47pub mod high_level;
48pub mod interactions;
49pub mod utilities;
50
51// Re-export commonly used items at crate root
52pub use browser::{
53    build_real_browser_args, clear_browser_cookie_memory_cache, connect_browser, emulate_media,
54    launch_and_connect_real_browser, launch_browser, launch_real_browser, list_browser_profiles,
55    read_browser_cookies, Browser, BrowserCookie, BrowserCookieReadOptions, BrowserProcess,
56    BrowserProfile, BrowserProfileOptions, ChromiumoxidePage, ColorScheme, ConnectOptions,
57    EmulateMediaOptions, LaunchOptions, LaunchResult, NodeBridgePage, RealBrowserLaunchResult,
58    RealBrowserOptions, SUPPORTED_COOKIE_BROWSERS,
59};
60pub use core::{
61    DialogEvent, DialogManager, DialogType, EngineAdapter, EngineError, EngineType, Logger,
62    LoggerOptions, PdfOptions, Timing, CHROME_ARGS, TIMING,
63};
64
65/// Prelude module for convenient imports.
66///
67/// Import everything commonly needed with:
68/// ```rust
69/// use browser_commander::prelude::*;
70/// ```
71pub mod prelude {
72    pub use crate::browser::{
73        clear_browser_cookie_memory_cache, connect_browser, emulate_media, goto,
74        launch_and_connect_real_browser, launch_browser, launch_real_browser,
75        list_browser_profiles, read_browser_cookies, verify_navigation, wait_for_navigation,
76        wait_for_url_stabilization, Browser, BrowserCookie, BrowserCookieReadOptions,
77        BrowserProcess, BrowserProfile, BrowserProfileOptions, ColorScheme, ConnectOptions,
78        EmulateMediaOptions, LaunchOptions, LaunchResult, NavigationOptions, NavigationResult,
79        RealBrowserLaunchResult, RealBrowserOptions, WaitUntil,
80    };
81    pub use crate::core::{
82        is_navigation_error, is_timeout_error, DialogEvent, DialogManager, DialogType,
83        EngineAdapter, EngineError, EngineType, Logger, LoggerOptions, PdfOptions, Timing,
84        CHROME_ARGS, TIMING,
85    };
86    pub use crate::elements::{
87        count, get_attribute, input_value, is_enabled, is_visible, normalize_selector,
88        text_content, ParsedSelector,
89    };
90    pub use crate::high_level::{
91        check_and_clear_flag, find_toggle_button, install_click_listener, wait_for_url_condition,
92    };
93    pub use crate::interactions::{
94        click_button, click_element, fill_text_area, key_down, key_up, perform_fill, press_key,
95        scroll_into_view, scroll_into_view_if_needed, type_text, ClickOptions, ClickResult,
96        FillOptions, FillResult, ScrollBehavior, ScrollOptions, ScrollResult,
97    };
98    pub use crate::utilities::{
99        evaluate, get_domain, get_url, parse_url, safe_evaluate, same_origin, unfocus_address_bar,
100        wait, wait_with_cancel, WaitResult,
101    };
102}