Rust Web自动化Demo

embedded/2024/10/19 6:07:45/

1.新建项目

使用RustCover新建项目,目录如下:

Cargo.toml文件

rust">[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.编写代码

以百度网站为例

rust">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

http://www.ppmy.cn/embedded/123682.html

相关文章

vite学习教程04、vue集成axios封装request工具类及应用

文章目录 前言1、安装axios2、封装request工具类3、封装api请求工具4、实战&#xff1a;vue中使用api请求工具类资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝3W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质作者、专注于Java后端技…

DualGS:高效人体体积视频渲染技术,实现复杂4D数字人表演的实时播放引言

随着虚拟现实(VR)和增强现实(AR)技术的发展,对高质量、低延迟的人体体积视频的需求日益增长。传统的视频压缩和渲染方法在处理复杂的4D人体动作时往往面临性能瓶颈。为了解决这一问题,研究人员开发了一种名为DualGS的新型高效人体体积视频渲染技术。本文将详细介绍DualGS…

centos7安装配置nginx

先安装依赖 安装依赖之前最好先执行下update yum update yum install gcc gcc-c pcre pcre-devel zlib zlib-devel openssl openssl-devel -y cd /usr/local/nginx wget http://nginx.org/download/nginx-1.18.0.tar.gz tar -zxvf nginx-1.18.0.tar.gz cd /usr/local/ngi…

[ComfyUI]Flux:超美3D微观山水禅意,经典中文元素AI重现,佛陀楼阁山水画卷

在数字艺术和创意领域&#xff0c;[ComfyUI]Flux以其独特的虚实结合技术&#xff0c;已经成为艺术家和设计师们手中的利器。今天&#xff0c;我们激动地宣布&#xff0c;[ComfyUI]Flux带来了一款超美的3D微观山水禅意作品&#xff0c;经典中文元素通过AI技术重现&#xff0c;包…

el-table动态表头

需求&#xff1a;初始化数据表头固定&#xff0c;通过查询或者页面携带参数查询&#xff0c;将后端返回的新字段加到原有表头上回显 <el-tableref"table":data"tableData":header-cell-style"{ background: #F5F7FA, height: 30px }"style&qu…

算法入门(C#):输入日期得到下一天的日期

#include<stdio.h> int main() { int n, y, r;//n:年, y:月, r:日 scanf("%d%d%d", &n, &y, &r); if (n > 0 && y > 0 && y < 13 && r>0) {//检查输入的日期是否合法 // 处理2月的情…

Streamlit 实现登录注册验证

在开发基于 Streamlit 的应用时&#xff0c;用户认证功能是一个常见需求。本文将介绍如何通过两种方式来实现登录注册功能&#xff1a;手动实现 和 使用 Streamlit-Authenticator 库。手动实现虽然灵活&#xff0c;但需要自行处理密码加密、验证等细节&#xff1b;而 Streamlit…

iTextPDF中,要实现表格中的内容在数据长度超过边框时自动换行

在iTextPDF中&#xff0c;要实现表格中的内容在数据长度超过边框时自动换行&#xff0c;你可以使用Phrase对象并设置其HyphenationEvent&#xff0c;或者使用Chunk对象并设置其setSplitCharacter方法。以下是一些方法来实现这一功能&#xff1a; 1. 使用Phrase对象&#xff1a…