当前位置: 首页 > news >正文

Rust自动化测试的框架

Rust实现Web自动化测试的框架

以下是10个使用Rust实现Web自动化测试的框架示例,涵盖不同场景和工具链:

使用thirtyfour(基于Selenium)

use thirtyfour::prelude::*;async fn example_selenium() -> WebDriverResult<()> {let caps = DesiredCapabilities::chrome();let driver = WebDriver::new("http://localhost:9515", caps).await?;driver.goto("https://www.baidu.com").await?;let elem = driver.find(By::Id("learn")).await?;elem.click().await?;driver.quit().await?;Ok(())
}

使用fantoccini(WebDriver客户端)

use fantoccini::{Client, Locator};async fn example_fantoccini() -> Result<(), fantoccini::error::CmdError> {let client = Client::new("http://localhost:9515").await?;client.goto("https://wwww.baidu.com").await?;let repo = client.find(Locator::Css(".repo")).await?;assert!(repo.text().await?.contains("Rust"));client.close().await
}

使用headless_chrome(无浏览器模式)

use headless_chrome::{Browser, protocol::page::CaptureScreenshotFormat};fn example_headless() -> Result<(), failure::Error> {let browser = Browser::default()?;let tab = browser.wait_for_initial_tab()?;tab.navigate_to("https://www.bing.com")?;tab.wait_until_navigated()?;let screenshot = tab.capture_screenshot(CaptureScreenshotFormat::Png,None,None,true)?;std::fs::write("screenshot.png", screenshot)?;Ok(())
}

表单提交测试

use thirtyfour::prelude::*;async fn test_form_submit() -> WebDriverResult<()> {let driver = WebDriver::new("http://localhost:9515", DesiredCapabilities::chrome()).await?;driver.goto("https://httpbin.org/forms/post").await?;driver.find(By::Name("custname")).await?.send_keys("John Doe").await?;driver.find(By::Css("input[value='small']")).await?.click().await?;driver.find(By::Tag("textarea")).await?.send_keys("Special notes").await?;driver.find(By::Css("button[type='submit']")).await?.click().await?;driver.quit().await
}

API测试与UI结合

use reqwest::StatusCode;
use thirtyfour::prelude::*;async fn combined_test() -> WebDriverResult<()> {// API测试let api_resp = reqwest::get("https://api.github.com/users/rust-lang").await?.json::<serde_json::Value>().await?;assert_eq!(api_resp["login"].as_str(), Some("rust-lang"));// UI测试let driver = WebDriver::new("http://localhost:9515", DesiredCapabilities::chrome()).await?;driver.goto("https://github.com/rust-lang").await?;let title = driver.title().await?;assert!(title.contains("Rust"));driver.quit().await
}

页面性能测试

use headless_chrome::{Browser, protocol::page::Metrics};fn test_performance() -> Result<(), failure::Error> {let browser = Browser::default()?;let tab = browser.wait_for_initial_tab()?;tab.navigate_to("https://www.bing.com")?;let metrics = tab.get_metrics()?;assert!(metrics.layout_duration.unwrap() < 1.0);Ok(())
}

多浏览器并行测试

use thirtyfour::prelude::*;
use tokio::task;async fn parallel_test() -> WebDrive
http://www.lqws.cn/news/469621.html

相关文章:

  • Linux 系统结构划分详解:用户区与内核区的设计逻辑
  • 软件工程概述知识点总结
  • 1.23Node.js 中操作 mongodb
  • 基于机器学习的侧信道分析(MLSCA)Python实现(带测试)
  • 智慧医院核心引擎:IBMS 系统守护医疗环境高效与安全​
  • 浅议 3D 展示技术为线上车展新体验带来的助力​
  • Taro 跨端开发:从调试到发布的完整指南
  • CTF--PhP Web解题(走入CTF)
  • 贪心算法思路详解
  • Redis后端的简单了解与使用(项目搭建前置)
  • ARCGIS国土超级工具集1.6更新说明
  • 零基础学习Redis(12) -- Java连接redis服务器
  • 60-Oracle 10046事件-实操
  • Qt的学习(七)
  • 【价值链】产品经理
  • 学习C++、QT---03(C++的输入输出、C++的基本数据类型介绍)
  • nn4dms开源程序是用于深度突变扫描数据的神经网络
  • 车载电子电器架构 --- 法律和标准对电子电气架构的影响
  • JAVA锁机制:对象锁与类锁
  • Vue 简写形式全解析:清晰记忆指南
  • 自动化立体仓库堆垛机控制系统STEP7 FC3功能块 I/O映射
  • 【基础算法】二分(二分查找 + 二分答案)
  • Gunicorn 在 Windows 上能安装但无法运行的解决方案
  • 跟着AI学习C# Day29
  • 网络安全迎来了新契机
  • C# WPF常用调试工具汇总
  • 【Redis】主从复制:配置、管理与优化
  • RTX5 | 配置文件RTX_Config.h
  • 借助ChatGPT快速开发图片转PDF的Python工具
  • 从0开始学习R语言--Day28--高维回归