# uxy-rpa-browser **Repository Path**: uxy-rpa/uxy-rpa-browser ## Basic Information - **Project Name**: uxy-rpa-browser - **Description**: RPA中浏览器操作器 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: rust - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-28 - **Last Updated**: 2026-03-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # uxy-rpa-browser [![Crates.io](https://img.shields.io/crates/v/uxy-rpa-browser.svg)](https://crates.io/crates/uxy-rpa-browser) [![Documentation](https://docs.rs/uxy-rpa-browser/badge.svg)](https://docs.rs/uxy-rpa-browser) [![Gitee](https://img.shields.io/badge/Gitee-rust-blue?logo=gitee)](https://gitee.com/uxy-rpa/uxy-rpa-browser) [![License](https://img.shields.io/crates/l/uxy-rpa-browser.svg)](https://gitee.com/uxy-rpa/uxy-rpa-browser/blob/master/LICENSE) RPA 浏览器操作器,提供浏览器自动化操作的封装库。 ## 功能特性 - 支持导航到指定URL - 支持点击页面元素 - 支持填充表单 - 支持选中/取消选中复选框 - 支持截图保存 - 支持等待操作 - 支持获取cookie - 支持等待元素出现 - 支持无头浏览器模式 ## 安装 在 `Cargo.toml` 文件中添加依赖: ```toml [dependencies] uxy-rpa-browser = { path = "path/to/uxy-rpa-browser" } ``` ## 基本使用 ```rust use uxy_rpa_browser::{action::Action, actor::Actor}; use playwright::Playwright; #[tokio::main] async fn main() -> anyhow::Result<()> { // 初始化 Playwright let playwright = Playwright::initialize().await?; // 创建浏览器(无头模式) let browser = Actor::browser_from_playwright(&playwright, true).await?; // 创建浏览器上下文 let context = Actor::context_from_browser(&browser).await?; // 创建 Actor let actor = Actor::new( std::sync::Arc::new(context), "test_actor", "https://www.example.com", vec!["example.com"], ).await?; // 执行操作 actor.act(Action::goto("https://www.example.com", Some(30000.0))).await?; actor.act(Action::wait(1000)).await?; // 获取 cookie let cookies = actor.cookie_map().await?; println!("获取到 {} 个cookie", cookies.len()); // 关闭浏览器 browser.close().await?; Ok(()) } ``` ## 操作类型 ### Action::Goto(url, timeout) 导航到指定URL - `url`: URL地址 - `timeout`: 超时时间(毫秒) ### Action::Click(selector, timeout) 点击指定选择器的元素 - `selector`: CSS选择器 - `timeout`: 超时时间(毫秒) ### Action::Fill(selector, text, timeout) 填充表单元素 - `selector`: CSS选择器 - `text`: 要填充的文本 - `timeout`: 超时时间(毫秒) ### Action::Check(selector, force, timeout) 选中/取消选中复选框 - `selector`: CSS选择器 - `force`: 是否强制选中 - `timeout`: 超时时间(毫秒) ### Action::Screenshot(path, timeout) 截图保存 - `path`: 保存路径 - `timeout`: 超时时间(毫秒) ### Action::Wait(timeout) 等待指定时间 - `timeout`: 等待时间(毫秒) ## Actor 方法 ### new(context, name, target, domains) 创建新的 Actor 实例 - `context`: 浏览器上下文 - `name`: 执行器名称 - `target`: 目标位置 - `domains`: 相关域名列表 ### act(action) 执行指定的操作 - `action`: 要执行的操作 ### acts_if_exist(selector, timeout, actions) 如果元素存在,则执行一系列操作 - `selector`: CSS选择器 - `timeout`: 超时时间(毫秒) - `actions`: 要执行的操作列表 ### waiting_for(selector, timeout) 等待指定元素出现 - `selector`: CSS选择器 - `timeout`: 超时时间(毫秒) ### waiting_all_for(selector, timeout) 等待所有指定元素出现并返回 - `selector`: CSS选择器 - `timeout`: 超时时间(毫秒) ### cookie_map() 获取指定域名的cookie映射 ### context_from_browser(browser) 从浏览器创建上下文 - `browser`: 浏览器实例 ### browser_from_playwright(playwright, headless) 从 Playwright 创建浏览器 - `playwright`: Playwright 实例 - `headless`: 是否无头模式 ## 测试 项目包含完整的测试套件,位于 `src/lib.rs` 文件中的 `tests` 模块内。 ### 运行测试 ```bash cd uxy-rpa-browser cargo test ``` ## 依赖 - `anyhow`: 错误处理 - `playwright`: 浏览器自动化 - `serde`: 序列化/反序列化 - `tokio`: 异步运行时 ## 许可证 MIT 许可证