当前位置: 首页 > 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

相关文章:

  • C++ - vector 的使用
  • Python的6万张图像数据集CIFAR-10和CIFAR-100说明
  • 软件工程概述:核心概念、模型与方法全解析
  • Linux编程:5、进程通信-命名管道
  • 从流量为王到留量为王:开源链动2+1模式、AI智能名片与S2B2C商城小程序的协同创新路径
  • Skrill是什么?中国用户能用吗?安全吗?完整指南
  • Spring Boot + MyBatis + Vue:全栈开发的深度剖析与实践指南
  • WINUI/WPF——Button不同状态下图标切换
  • DM8故障分析工具-AWR报告
  • mysql导入大sql(比如10GB的sql文件)
  • Kubernetes核心技术原理详解
  • Linux文件元信息完全指南:权限、链接与时间属性
  • 文本分类与聚类:让信息“各归其位”的实用方法
  • 用Python实现安全封装EXE文件加密保护工具
  • Windows IOCP(I/O Completion Port)模型详解
  • TCP 三次握手与四次挥手全流程详解
  • Android Studio 打 APK 包报错 Invalid keystore format 的解决方法
  • Linux运维新人自用笔记(Ubuntu磁盘命名规则、新磁盘分区、主流文件系统类型、mkfs命令格式化文件系统、临时和永久挂载、挂载报错、dd指令)
  • C++11 std::thread 多线程编程详解
  • 18年磨一剑!开利科技启动数字化增量投资新时代
  • ps怎么做网站/seo营销优化软件
  • 深圳外贸营销型网站建设/百度seo网站优化 网络服务
  • 镇江网站建设报价/徐州百度快照优化
  • 网站建设策划书范文/海东地区谷歌seo网络优化
  • 网页设计教程属于web吗/优化精灵
  • 自己的电脑做网站当服务器使用/网络营销推广公司名称