Playwright for .NET是专门为.NET开发者设计的类库,作为Playwright项目的一部分,同样支持多种浏览器,并且能够在不同的操作系统和设备上运行。其目标是简化跨浏览器的Web自动化,确保测试的一致性和可靠性。除了测试之外,Playwright for .NET也可用于爬虫、自动化任务和其他需要Web自动化的场景。
主要特点跨浏览器一致性:Playwright for .NET支持多种浏览器,包括 Chrome、Firefox 和 WebKit。确保在不同浏览器上自动化的一致性。多平台支持:Playwright for .NET可以在Windows, Linux, macOS以及iOS和Android上运行。无头模式:支持无头浏览器,适用于不需要图形用户界面的场景。同步和异步API:提供同步和异步API,使得编程更加灵活。网络延迟模拟:可以模拟不同的网络条件,用于测试在不同网络环境下的应用表现。图像比较功能:可以用于自动化检查应用的UI是否发生变化。应用实例首先,确保已经安装了Playwright for .NET库。如果还没有安装,可以使用NuGet包管理器进行安装。在Visual Studio中,可以通过NuGet包管理器安装。
也可通过控制台执行以下命令:

Install-Package Playwright
然后,在控制台应用程序中添加命名空间
using Microsoft.Playwright;
编写程序代码

static async System.Threading.Tasks.Task Main(string[] args){ // 创建 Playwright 浏览器实例 using (var playwright = await Playwright.CreateAsync()) { // 创建一个浏览器实例 var browser = await playwright.Chromium.LaunchAsync( new BrowserTypeLaunchOptions() { ExecutablePath = @"C:\Program Files\Google\Chrome\Application\chrome.exe",//浏览器的安装目录 Headless = false // 设置为 false 以可视化浏览器窗口 }); // 创建一个新页面 var context = await browser.NewContextAsync(); var page = await context.NewPageAsync(); // 打开一个网页 await page.GotoAsync("https://www.baidu.com/"); //网页截屏并保存到运行目录 await page.ScreenshotAsync(new PageScreenshotOptions() { Path = "screenshot.png"//保存的文件名 }); // 在搜索框中输入“Hello World!” await page.Locator("input#kw.s_ipt").FillAsync("Hello World!"); //// 模拟鼠标点击 //await page.GetByText("百度一下").ClickAsync(); // 模拟回车键输入 await page.GetByText("Submit").PressAsync("Enter"); // 获取网页标题并输出 var title = await page.TitleAsync(); Console.WriteLine($"Page title is: {title}"); System.Console.ReadKey(); //关闭浏览器 await browser.CloseAsync(); }
这个示例包含了使用 Playwright 创建浏览器实例、打开网页、输入文本,点击按钮、获取网页标题并关闭浏览器的操作。在实际使用时,可以根据需要扩展,以实现更复杂的自动化测试功能。具体内容,可详见官方帮助文档Fast and reliable end-to-end testing for modern web apps | Playwright .NET
在开发过程中,如需要查看页面元素,则可以启动浏览器的开发者工具,以chrome为例
输入框元素
搜索按钮元素
执行结果
结语总结起来,微软的Playwright是一个强大且易于使用的自动化测试工具,可用于测试Web应用程序。通过简单的API和示例,开发人员可以轻松地模拟用户交互行为,并验证Web应用程序的功能和性能。无论是小型项目还是大型企业应用程序,Playwright都是一个值得考虑的选择。