[PlayWright入门教程]C# PlayWright常用操作代码
C# PlayWright常用操作代码
1.浏览器基本设置,以谷歌为例,其它浏览器设置相同不再赘述
//创建PlayWright对象 IPlaywright playwright = await Playwright.CreateAsync(); //创建浏览器加载选项 BrowserTypeLaunchOptions options = new BrowserTypeLaunchOptions(); /* * 设置PlayWright运行时有/无浏览器UI,默认无 * Headless=true,运行速度快,常用于自动化运行 * Headless=false,常用于调试代码 */ options.Headless = false; //设置浏览器沙盒模式 options.ChromiumSandbox = false; /* * 设置浏览器可执行文件路径 * Windows:%USERPROFILE%\AppData\Local\ms-playwright * MacOS:~/Library/Caches/ms-playwright * Linux:~/.cache/ms-playwright * 也可设置本机安装的相应浏览器 * 调试环境下可不设置,如发布程序浏览器可执行文件发生变动则必须设置; */ options.ExecutablePath = @"C:\Users\Account\AppData\Local\ms-playwright\chromium-1097\chrome-win\chrome.exe";

Google Chrome、Firefox、Webkit文件夹

Google Chrome所在文件夹及路径;

可执行文件必须和浏览器对象不一致会出现Microsoft.Playwright.TargetClosedException异常。

浏览器可执行文件路径出错或文件不存在会导致Microsoft.Playwright.PlaywrightException异常,如网站加载时间超出默认时长会出现TimeoutException异常。
2.查找元素
//通过XPath来获取元素 var gameName = await page.Locator("xpath=//*[@id=\"gs_game\"]");
3.行动
// 文本输入 await page.GetByRole(AriaRole.Textbox).FillAsync("Peter"); // 日期输入 await page.GetByLabel("Birth date").FillAsync("2020-02-02"); // 时间输入 await page.GetByLabel("Appointment time").FillAsync("13-15"); // 本地时间输入 await page.GetByLabel("Local time").FillAsync("2020-03-02T05:15"); // Check the checkbox await page.GetByLabel("I agree to the terms above").CheckAsync(); // Assert the checked state await Expect(page.GetByLabel("Subscribe to newsletter")).ToBeCheckedAsync(); // Select the radio button await page.GetByLabel("XL").CheckAsync(); // Single selection matching the value or label await page.GetByLabel("Choose a color").SelectOptionAsync("blue"); // Single selection matching the label await page.GetByLabel("Choose a color").SelectOptionAsync(new SelectOptionValue { Label = "blue" }); // Multiple selected items await page.GetByLabel("Choose multiple colors").SelectOptionAsync(new[] { "blue", "green", "red" });
await page.GetByRole(AriaRole.Img, new() { Name = "刷新" }).ScreenshotAsync(new LocatorScreenshotOptions { Path = @".\abc.png"});//对指定元素截图 await page.ScreenshotAsync(new PageScreenshotOptions { Path = @".\Screenshot\abc.png" });//整个浏览器页面截图
4.检查元素状态
ILocator loctor = page.GetByRole(AriaRole.Button, new() { Name = "Click Me" }); Console.WriteLine(loctor.IsEnabledAsync().Result); Console.WriteLine(loctor.IsEditableAsync().Result); Console.WriteLine(loctor.IsHiddenAsync().Result); Console.WriteLine(loctor.IsVisibleAsync().Result);
5.页面达到所需加载状态时返回
await page.WaitForLoadStateAsync(LoadState.Load); // 当达到所需的负载状态时返回。 // 这解决了当页面达到所需的加载状态时的问题,默认情况下为加载。调用此方法时,导 // 航必须已提交。如果当前文档已达到所需状态,则立即解决。 // LoadState枚举: // 0:Load, // 1:DOMContentLoaded, // 2:NetworkIdle
6. 当前页面跳转至其他页面出现加载超时

浙公网安备 33010602011771号