9个版本

0.1.3 2023年5月23日
0.1.2 2023年5月23日
0.1.0-beta82023年7月1日
0.1.0-beta72023年6月14日

#1249 in Web编程


2个crates中使用(通过wda

MIT OR GPL-3.0-or-later

455KB
11K SLoC

一个WebDriver客户端库。

概述

WebDriver是一个广泛采用的W3C标准,用于浏览器自动化。它以平台和语言无关的方式定义了算法。它打开了使用系统编程语言(如Rust或C/C++)进行WebUI测试/浏览器自动化的可能性,从而提高了性能、效率和安全性。

此crate提供客户端WebDriver的纯Rust实现,目标如下

  1. 标准兼容性:它跟踪经典WebDriver和现代BiDi标准。

  2. 低开销:它没有运行时依赖。

  3. 卓越的性能:它力求实现零拷贝操作。

示例

注意:假设使用GeckoDriver,默认设置。

导航到网站

use wdc::{GeckoDriver, WdcError, WebDrvClient};

go_w3c().unwrap();

fn go_w3c() -> Result<(), WdcError> {
   let wdc: WebDrvClient<GeckoDriver> = wdc::init("127.0.0.1", 4444, 10)?;
   let url = "https://www.w3.org/standards";

   wdc.navi_to(url)?;
   // ...whatever tests/automation on "w3.org"

   Ok(())
}

在网站上运行JavaScript

use wdc::{GeckoDriver, WdcError, WebDrvClient};

check_out_w3c_history().unwrap();

fn check_out_w3c_history() -> Result<(), WdcError> {
   let wdc: WebDrvClient<GeckoDriver> = wdc::init("127.0.0.1", 4444, 10)?;
   let url = "https://www.w3.org/Consortium/facts.html";

   let js_result = wdc.navi_to(url)?.exec_sync(
       "return document.getElementById('history').nextElementSibling.innerText;",
       vec![],
   )?;

   let w3c_history = String::from_utf8_lossy(&js_result);
   assert!(w3c_history.contains("Tim Berners-Lee"));
   assert!(w3c_history.contains("World Wide Web"));
   assert!(w3c_history.contains("HTML"));

   Ok(())
}

依赖项

~2.7–4.5MB
~85K SLoC