Microsoft.Playwright 是由微软开发的开源自动化测试工具,支持多种编程语言(如 C#、JavaScript、Python 等)和主流浏览器(Chromium、Firefox、WebKit)。它通过统一的 API 提供跨浏览器的自动化能力,广泛应用于 Web 应用的端到端测试、爬虫开发和自动化任务,支持无头模式、设备仿真、截图等功能,帮助开发者高效实现自动化测试和开发任务。
一、安装第一步老规矩,安装Nuget包
dotnet add package Microsoft.Playwright
使用指南下面是使用 Playwright 在必应浏览器中输入“dotnetshare”并截屏的操作。
// See https://aka.ms/new-console-template for more informationusing System.Text.RegularExpressions;using Microsoft.Playwright;Console.WriteLine("Hello, World!");// 创建 Playwright 实例usingvar playwright = await Playwright.CreateAsync();// 指定浏览器的可执行文件路径string executablePath = @"C:\Program Files\Google\Chrome\Application\chrome.exe";// 启动浏览器(Chromium)awaitusingvar browser = await playwright.Chromium.LaunchAsync( new BrowserTypeLaunchOptions { Headless = false, ExecutablePath = executablePath, } );// 创建新页面var page = await browser.NewPageAsync();// 打开目标网页await page.GotoAsync("https://cn.bing.com/");// 定位搜索框并输入“Netshare”var searchBox = page.Locator("input[name='q']");await searchBox.FillAsync("dotnetshare");// 模拟按下回车键进行搜索await searchBox.PressAsync("Enter");// 等待页面加载完成await page.RunAndWaitForConsoleMessageAsync(async () => {} );Thread.Sleep(2000);// 截图保存搜索结果页面await page.ScreenshotAsync(new PageScreenshotOptions { Path = "bing-search-result.png" });// 选择下拉框中的选项//await page.SelectOptionAsync("select[name='name']", "dotnetshare");// 找到文件上传输入框//var fileInput = await page.QuerySelectorAsync("input[type='file']");// 上传文件//string filePath = "C:\\Users\\Pride\\Pictures\\20210517111144223.png"; //await fileInput.SetInputFilesAsync(filePath);// 提取页面标题//string title = await page.TitleAsync();//Console.WriteLine("Page title: " + title);// 等待表格加载完毕//await page.WaitForSelectorAsync("table");// 获取表格内容//var tableHtml = await page.InnerHTMLAsync("table");// 使用正则表达式提取表格数据//var regex = new Regex(@"(.*?)");//var matches = regex.Matches(tableHtml);// 关闭浏览器//await browser.CloseAsync();
总结Playwright 是一个非常强大的自动化工具,提供了丰富的功能,用于测试、爬虫开发和自动化操作。
官方文档:https://learn.microsoft.com/zh-cn/microsoft-edge/playwright/
关注公众号“Net分享”,技术文章第一时间推送,随缘更新 , 分享一些你可能注意不到的细节。