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

推荐一个微软官方开源浏览器自动化工具,可以用于UI自动化测试、爬虫等,具备.Net、Java、Python等多个版本!

推荐一个微软官方开源,且功能非常强大的浏览器自动化工具, 让我们很容易控制Chromium、Firefox 和 WebKit 内核的浏览器,实现跨浏览器的网页自动化操作。

01 项目简介

Playwright 一个开源浏览器自动化工具。 支持 Chromium、WebKit 和 Firefox 浏览器,且在不同操作系统(Linux、macOS 和 Windows)上均能良好运行,可在不同环境和浏览器间进行统一的自动化操作。

提供了一系列丰富的 API,可方便地实现页面导航、元素选择、截图、表单操作、文件下载等网页自动化功能,几乎涵盖了网页自动化测试的各种常见场景需求。

另外 .NET 版本的 Playwright,能够很好地与现有的 .NET 项目和技术栈进行集成,例如可以与测试框架(如 NUnit、xUnit 等)结合使用,方便地编写和执行自动化测试用例,融入到项目现有的测试流程中。

02 使用场景

  • 网页自动化测试 :可用于对 Web 应用程序进行功能测试、性能测试、兼容性测试等,通过编写自动化测试脚本,模拟用户在不同浏览器下的操作行为,快速发现和定位问题,提高测试效率和质量。

  • 网页内容抓取 :可以利用其自动化访问网页的能力,实现网页数据的抓取,例如获取网页中的文本、图片、表格等信息,用于数据分析、数据挖掘等场景。

  • 自动化任务执行 :在需要定期或批量执行某些网页操作的任务中发挥作用,如自动登录、自动填写表单、自动下载文件等,可减少人工重复操作,提高工作效率。

03 快速入门

1、截屏

using Microsoft.Playwright;using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.LaunchAsync(new() { Headless = false,//指定浏览器路径ExecutablePath= "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
});
var page = await browser.NewPageAsync();
await page.GotoAsync("https://playwright.dev/dotnet");
await page.ScreenshotAsync(new() { Path = "screenshot.png" });

2、指定元素截图

using Microsoft.Playwright;// 创建 Playwright 实例
using var playwright = await Playwright.CreateAsync();
// 启动 Chromium 浏览器(非无头模式)
await using var browser = await playwright.Chromium.LaunchAsync(new()
{Headless = false,ExecutablePath = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
});
// 创建一个新的页面
var page = await browser.NewPageAsync();
// 导航到页面
await page.GotoAsync("https://playwright.dev/dotnet", new PageGotoOptions()
{Timeout=60*1000
});// 通过 CSS 选择器选择元素
IElementHandle element = await page.QuerySelectorAsync(".container");
if (element != null)
{// 截取特定元素的截图await element.ScreenshotAsync(new() { Path = "element-screenshot.png" });
}// 关闭浏览器
await browser.CloseAsync();

3、获取元素内容

using Microsoft.Playwright;// 创建 Playwright 实例
using var playwright = await Playwright.CreateAsync();
// 启动 Chromium 浏览器(非无头模式)
await using var browser = await playwright.Chromium.LaunchAsync(new()
{Headless = false,ExecutablePath = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
});
// 创建一个新的页面
var page = await browser.NewPageAsync();
// 导航到页面
await page.GotoAsync("https://playwright.dev/dotnet", new PageGotoOptions()
{Timeout=60*1000
});// 通过 CSS 选择器选择元素
IElementHandle element = await page.QuerySelectorAsync("#__docusaurus");
if (element != null)
{// 执行元素操作,如获取文本内容string text = await element.TextContentAsync();Console.WriteLine($"Element text: {text}");
}// 关闭浏览器
await browser.CloseAsync();

4、表单提交

using Microsoft.Playwright;// 创建 Playwright 实例
using var playwright = await Playwright.CreateAsync();
// 启动 Chromium 浏览器(非无头模式)
await using var browser = await playwright.Chromium.LaunchAsync(new()
{Headless = false,ExecutablePath = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
});
// 创建一个新的页面
var page = await browser.NewPageAsync();
// 导航到页面
await page.GotoAsync("https://playwright.dev/dotnet", new PageGotoOptions()
{Timeout=60*1000
});// 填写文本输入框
await page.FillAsync("#username", "your-username");
await page.FillAsync("#password", "your-password");// 选择单选按钮
await page.CheckAsync("#radio-option");// 选择下拉框选项
await page.SelectOptionAsync("#dropdown", "option-value");// 提交表单
await page.ClickAsync("#submit-button");// 关闭浏览器
await browser.CloseAsync();

5、下载文件

using Microsoft.Playwright;// 创建 Playwright 实例
using var playwright = await Playwright.CreateAsync();
// 启动 Chromium 浏览器(非无头模式)
await using var browser = await playwright.Chromium.LaunchAsync(new()
{Headless = false,ExecutablePath = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
});
// 创建一个新的浏览器上下文
var context = await browser.NewContextAsync(new BrowserNewContextOptions
{AcceptDownloads = true,
});
// 创建一个新的页面
var page = await context.NewPageAsync();
// 导航到页面
await page.GotoAsync("https://playwright.dev/dotnet", new PageGotoOptions()
{Timeout=60*1000
});// 点击下载链接并等待下载完成
await page.ClickAsync("#download-link");
// 等待下载完成
await page.WaitForDownloadAsync();// 关闭浏览器
await browser.CloseAsync();

04 项目简介

https://github.com/microsoft/playwright-dotnet

最后欢迎加入我的 知识星球,带你从零学习:三层架构与领域驱动设计架构!

- End -

推荐阅读

Squidex:一个基于.Net功能强大的CMS开源项目

barcodelib:一个功能强大且易于使用的 C# 条形码生成库

盘点11个.Net比较流行的开源的ORM框架

盘点6个WebAPI+Vue前后端分离的.Net开源项目

WebOptimizer:轻松实现 CSS 和 JavaScript 的压缩与打包,全面提升 ASP.NET Core 性能

相关文章:

  • Flutter介绍、Flutter Windows Android 环境搭建 真机调试
  • Python实现SSE流式推送
  • 【蒸馏(5)】DistillBEV代码分析
  • 关于华为云OneAccess登录认证过程介绍
  • 论文阅读_Search-R1_大模型+搜索引擎
  • Maven多模块工程版本管理:flatten-maven-plugin扁平化POM
  • 深入浅出限流算法(二):更平滑的滑动窗口
  • MATLAB小试牛刀系列(1)
  • 【前端】1h 搞定 TypeScript 教程_只说重点
  • 并发设计模式实战系列(8):Active Object
  • ArcPy 中的地理处理工具
  • 微信小程序开发笔记
  • C++学习:六个月从基础到就业——模板编程:SFINAE原则
  • 配置扩展ACL
  • 文号验证-同时对两个输入框验证
  • 编程日志4.23
  • 相机-IMU联合标定:相机-IMU外参标定
  • Molex莫仕连接器:增强高级驾驶辅助系统,打造更安全的汽车
  • Web技术与Apache网站部署
  • Halcon 3D 表面匹配基于形状
  • 专访|首夺天元头衔创生涯历史,王星昊打算一步一步慢慢来
  • 鄂湘赣“中三角”,能否走向文旅C位?
  • 第1现场|无军用物资!伊朗港口爆炸已遇难40人伤1200人
  • 清华成立人工智能医院,将构建“AI+医疗+教育+科研”闭环
  • 对话|男篮国手杨瀚森:参加NBA选秀,去更大的舞台追梦
  • 从“高阶智驾”到“辅助驾驶”,上海车展上的“智驾”宣发变调