#web-driver #selenium #chromedriver #自动化 #geckodriver #API绑定

thirtyfour

Thirtyfour是Rust的Selenium / WebDriver库,用于自动化网站UI测试。已在Chrome和Firefox上测试,但任何具有webdriver功能的浏览器都应正常工作

96个发布版本

0.33.0 2024年7月21日
0.32.0 2024年4月6日
0.32.0-rc.102024年2月19日
0.32.0-rc.82023年6月4日
0.1.0 2019年11月30日

#11 in HTTP客户端

Download history 4081/week @ 2024-05-04 4584/week @ 2024-05-11 5151/week @ 2024-05-18 3772/week @ 2024-05-25 4360/week @ 2024-06-01 4012/week @ 2024-06-08 4044/week @ 2024-06-15 3981/week @ 2024-06-22 3662/week @ 2024-06-29 3725/week @ 2024-07-06 5491/week @ 2024-07-13 5301/week @ 2024-07-20 5291/week @ 2024-07-27 6023/week @ 2024-08-03 4857/week @ 2024-08-10 3855/week @ 2024-08-17

20,994 每月下载量
用于 25 个crate(20 直接)

MIT/Apache

400KB
6.5K SLoC

Crates.io docs.rs Build Status code coverage

thirtyfour

Thirtyfour是Rust的Selenium / WebDriver库,用于自动化网站UI测试。

功能

  • 支持所有W3C WebDriver和WebElement方法
  • 直接通过WebDriver(例如chromedriver)创建新的浏览器会话
  • 通过Selenium Standalone或Grid创建新的浏览器会话
  • 查找元素(通过所有常见的选择器,例如Id、Class、CSS、Tag、XPath)
  • 向元素发送键,包括键组合
  • 执行JavaScript
  • 动作链
  • 获取和设置cookie
  • 切换到frame/window/element/alert
  • 支持Shadow DOM
  • 支持Alert
  • 捕获/保存浏览器或单个元素的PNG截图
  • Chrome DevTools Protocol (CDP)支持(有限)
  • 高级查询接口,包括显式等待和各种谓词
  • 组件包装器(类似于Page Object Model

功能标志

  • rustls-tls:(默认)使用rustls提供TLS支持(通过reqwest)。
  • native-tls:使用原生TLS(通过reqwest)。
  • component:(默认)启用Component derive宏(通过thirtyfour_macros)。

示例

示例假设您已经在系统上运行了chromedriver

您可以使用Selenium(请参阅以下说明)或直接使用chromedriver,通过从这里下载与您的Chrome版本匹配的chromedriver: https://chromedriver.chromium.org/downloads

然后按如下方式运行它

chromedriver

示例(异步)

要运行此示例

cargo run --example tokio_async
use thirtyfour::prelude::*;

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

     // Navigate to https://wikipedia.org.
     driver.goto("https://wikipedia.org").await?;
     let elem_form = driver.find(By::Id("search-form")).await?;

     // Find element from element.
     let elem_text = elem_form.find(By::Id("searchInput")).await?;

     // Type in the search terms.
     elem_text.send_keys("selenium").await?;

     // Click the search button.
     let elem_button = elem_form.find(By::Css("button[type='submit']")).await?;
     elem_button.click().await?;

     // Look for header to implicitly wait for the page to load.
     driver.find(By::ClassName("firstHeading")).await?;
     assert_eq!(driver.title().await?, "Selenium - Wikipedia");
    
     // Always explicitly close the browser.
     driver.quit().await?;

     Ok(())
}

最低支持的Rust版本

“thirtyfour”的MSRV(最小支持的Rust版本)目前是最新版本,因此可以保证运行最新的稳定版本。

许可证

本作品采用MIT或Apache 2.0双重许可。如果您使用本作品,可以选择任一许可证。

有关更多详细信息,请参阅NOTICE文件。

SPDX-许可证-标识符: MIT Apache-2.0

依赖项

~9–22MB
~324K SLoC