[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. 当前页面跳转至其他页面出现加载超时

图片

 

posted @ 2024-02-09 01:18  修道者~  阅读(2111)  评论(0)    收藏  举报