thirtyfour rust库的使用方法

最近在学习Rust编程,听说thirtyfour这个库很适合做Web自动化测试,但官方文档看起来有点简略。想请教一下:

  1. thirtyfour库的基本用法是怎样的?能否给个简单的代码示例?
  2. 这个库支持哪些浏览器?需要额外安装驱动吗?
  3. 在处理动态加载网页时有什么特别的技巧吗?
  4. 和Selenium相比,thirtyfour有什么优势或不足?

刚接触这个库,希望能得到一些使用经验分享,谢谢!

2 回复

thirtyfour是一个Rust的WebDriver客户端库,用于浏览器自动化。使用方法:

  1. 添加依赖到Cargo.toml:
[dependencies]
thirtyfour = "0.30"
tokio = { version = "1", features = ["full"] }
  1. 基本示例:
use thirtyfour::prelude::*;

#[tokio::main]
async fn main() -> WebDriverResult<()> {
    let caps = DesiredCapabilities::chrome();
    let driver = WebDriver::new("http://localhost:9515", caps).await?;
    
    driver.goto("https://example.com").await?;
    let elem = driver.find(By::Id("search")).await?;
    elem.send_keys("rust").await?;
    
    driver.quit().await?;
    Ok(())
}

需要先启动WebDriver服务(如ChromeDriver)。


thirtyfour 是一个基于 Rust 的 Selenium WebDriver 库,用于自动化浏览器操作。以下是基本使用方法:

安装依赖

Cargo.toml 中添加:

[dependencies]
thirtyfour = "0.27"
tokio = { version = "1.0", features = ["full"] }

基本使用示例

use thirtyfour::prelude::*;

#[tokio::main]
async fn main() -> WebDriverResult<()> {
    // 启动 WebDriver(需先运行 chromedriver)
    let caps = DesiredCapabilities::chrome();
    let driver = WebDriver::new("http://localhost:9515", caps).await?;

    // 导航到网页
    driver.goto("https://www.example.com").await?;

    // 查找元素并操作
    let elem = driver.find(By::Id("search")).await?;
    elem.send_keys("thirtyfour").await?;
    elem.click().await?;

    // 获取页面标题
    let title = driver.title().await?;
    println!("页面标题: {}", title);

    // 关闭浏览器
    driver.quit().await?;

    Ok(())
}

常用功能

元素定位

// 多种定位方式
let by_id = driver.find(By::Id("element_id")).await?;
let by_name = driver.find(By::Name("username")).await?;
let by_css = driver.find(By::Css("div.container > input")).await?;
let by_xpath = driver.find(By::XPath("//button[@type='submit']")).await?;

表单操作

// 输入文本
elem.send_keys("hello world").await?;

// 清空输入框
elem.clear().await?;

// 提交表单
elem.submit().await?;

等待机制

use std::time::Duration;
use thirtyfour::extensions::query::ElementQuery;

// 显式等待
let elem = driver
    .query(By::Id("dynamic_element"))
    .wait(Duration::from_secs(10), Duration::from_millis(500))
    .first()
    .await?;

运行前准备

  1. 下载对应浏览器的 WebDriver(如 chromedriver)
  2. 启动 WebDriver 服务:chromedriver --port=9515
  3. 运行你的 Rust 程序

这个库提供了完整的浏览器自动化功能,支持 Chrome、Firefox 等主流浏览器。

回到顶部