推荐一个微软官方开源浏览器自动化工具,可以用于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 性能