1.新建项目
使用RustCover新建项目,目录如下:
Cargo.toml文件
[package]
name = "Demo"
version = "0.1.0"
edition = "2021"
[dependencies]
tokio = { version = "1", features = ["full"] }
thirtyfour = { version = "0.31.0", features = ["component"] }
scraper = "0.15.0"
2.编写代码
以百度网站为例
use std::time::Duration;
use thirtyfour::By;
use tokio;
use thirtyfour::prelude::{DesiredCapabilities, WebDriver, WebDriverResult};
#[tokio::test]
async fn navigate_to_url() -> WebDriverResult<()> {
let capabilities = DesiredCapabilities::chrome();
let driver = WebDriver::new("http://localhost:9515", capabilities)
.await
.expect("Failed to connect to localhost:9515!");
driver.maximize_window().await?;
driver.set_implicit_wait_timeout(std::time::Duration::from_secs(10)).await?;
tokio::time::sleep(Duration::from_secs(3)).await;
driver
.goto("https://www.baidu.com")
.await
.expect("Couldn't navigate to the URL!");
tokio::time::sleep(Duration::from_secs(2)).await;
let search_input = driver.find(By::Id("kw")).await?;
search_input.send_keys("Hello").await?;
tokio::time::sleep(Duration::from_secs(2)).await;
let search_button = driver.find(By::Id("su")).await?;
search_button.click().await?;
tokio::time::sleep(Duration::from_secs(2)).await;
let page_title = driver.title()
.await
.expect("Page title not found");
driver.quit().await?;
assert_eq!(
page_title,
"Hello_百度搜索"
);
Ok(())
}
3.运行项目
在RustCover打开终端,输入命令:
chromedriver --port=9515
然后再新建终端,输入命令:
cargo test