#browser #自动化 #无头 #Web #测试

bin+lib playwright

Playwright 的 Rust 版本

21 个版本

0.0.20 2022年8月20日
0.0.19 2021年11月27日
0.0.18 2021年5月25日
0.0.16 2021年4月25日
0.0.5 2021年3月29日

#6 in #headless

Download history 84/week @ 2024-03-11 199/week @ 2024-03-18 302/week @ 2024-03-25 596/week @ 2024-04-01 192/week @ 2024-04-08 449/week @ 2024-04-15 364/week @ 2024-04-22 367/week @ 2024-04-29 373/week @ 2024-05-06 585/week @ 2024-05-13 385/week @ 2024-05-20 365/week @ 2024-05-27 199/week @ 2024-06-03 105/week @ 2024-06-10 78/week @ 2024-06-17 104/week @ 2024-06-24

每月 504 次下载

MIT/Apache

1MB
14K SLoC

🎭 Playwright for Rust

crates.io docs.rs MIT OR Apache-2.0 CI codecov

Playwright 是一个 Rust 库,用于自动化基于 Node.js 库构建的 Chromium、Firefox 和 WebKit。

安装

[dependencies]
playwright = "0.0.18"

使用方法

use playwright::Playwright;

#[tokio::main]
async fn main() -> Result<(), playwright::Error> {
    let playwright = Playwright::initialize().await?;
    playwright.prepare()?; // Install browsers
    let chromium = playwright.chromium();
    let browser = chromium.launcher().headless(true).launch().await?;
    let context = browser.context_builder().build().await?;
    let page = context.new_page().await?;
    page.goto_builder("https://example.com/").goto().await?;

    // Exec in browser and Deserialize with serde
    let s: String = page.eval("() => location.href").await?;
    assert_eq!(s, "https://example.com/");
    page.click_builder("a").click().await?;
    Ok(())
}

异步运行时

这些运行时已通过测试。您可以禁用默认的 tokio 特性,然后选择另一个。

不兼容性

Rust 中函数没有默认参数。现在使用构建器模式传递具有两个或更多可选参数的函数。

Playwright 驱动程序

Playwright 被设计为服务器-客户端。所有依赖 Playwright 客户端的操作都依赖于驱动程序:核心 JS 库和 Node.js 的压缩包。使用此库的应用程序将在构建时将驱动程序打包到 Rust 可执行文件中。第一次运行时会有解压的开销。

注意

playwright-rust redistributes Playwright licensed under the Apache 2.0.
Playwright has NOTICE:
"""
Playwright
Copyright (c) Microsoft Corporation

This software contains code derived from the Puppeteer project (https://github.com/puppeteer/puppeteer),
available under the Apache 2.0 license (https://github.com/puppeteer/puppeteer/blob/master/LICENSE).
"""

Rust 中的浏览器自动化

其他语言

依赖项

~8–24MB
~309K SLoC