6个版本
0.3.0 | 2023年6月19日 |
---|---|
0.2.0 | 2023年6月19日 |
0.1.0 | 2023年5月8日 |
#38 in #html-css
每月49次下载
用于 web_stress_tools
59KB
1K SLoC
no_browser
no_browser库旨在提供通过一个轻量级、无头“网页浏览器”与网页进行程序交互的高级API。这不是一个真正的网页浏览器,如Firefox或Chrome。
no_browser
在reqwest之上构建,处理HTTP请求、HTTP重定向和Cookie管理,以及通过scraper解析HTML代码。此库使用CSS选择器来自由访问给定网页的任何元素。它还提供了自己的抽象来填写和提交网页表单。
然而,no_browser
不支持客户端JavaScript或实际上渲染网页的概念。因此,如果您想测试现代JavaScript驱动的网页应用,请选择驱动真实网页浏览器的库,如fantoccini或thirtyfour。
示例
let browser = Browser::builder().finish()?;
// Lets go to the Wikipedia main page
let mut page = browser.navigate_to("https://en.wikipedia.org/", None)?;
// the title tag should be "Wikipedia, the free encyclopedia"
assert_eq!(
page.select_first("head > title")?.inner_html(),
"Wikipedia, the free encyclopedia"
);
// the main page should welcome us
assert!(page
.select_first("h1 > span.mw-headline")?
.inner_html()
.starts_with("Welcome to"));
// fill out the search form ...
let search_form = page.form_by_id_mut("searchform")?;
search_form
.input_mut(InputType::Search, "search")?
.set_value(Some("rust programming language".to_owned()));
// ... and submit
let page = browser.submit_form(search_form, None)?;
// the new title tag should be "Rust (programming language) - Wikipedia"
assert_eq!(
page.select_first("head > title")?.inner_html(),
"Rust (programming language) - Wikipedia"
);
// The main title on the html page should be quite similar
assert_eq!(
page.select_first("span.mw-page-title-main")?.inner_html(),
"Rust (programming language)"
);
// The main title should have a subtitle showing we've been redirected
assert!(page
.select_first("div#contentSub span.mw-redirectedfrom")?
.inner_html()
.starts_with("(Redirected from"));
// The table of contents should have more than 10 entries
assert!(page
.select("div#vector-toc ul#mw-panel-toc-list li.vector-toc-list-item")?
.len() > 10);
许可证
以下任一许可证下授权
- Apache License,版本2.0 (LICENSE-APACHE 或 http://apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
SPDX-许可证-标识符: MIT 或Apache-2.0
贡献
除非您明确声明,否则您提交的任何旨在包含在本作品中的贡献,根据Apache-2.0许可证定义,应按上述方式双许可,不附加任何额外条款或条件。
依赖项
~13–27MB
~532K SLoC