Skip to content

.NET version of the Playwright testing and automation library.

License

Notifications You must be signed in to change notification settings

staff0rd/playwright-sharp

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎭 Playwright for .NET NuGet version Join Slack

PlaywrightSharp is a .Net library to automate Chromium, Firefox and WebKit browsers with a single API. Playwright delivers automation that is ever-green, capable, reliable and fast. See how Playwright is better.

Linux macOS Windows
Chromium 86.0.4238.0
WebKit 14.0
Firefox 80.0b8

Headless execution is supported for all browsers on all platforms.

Usage

Playwright Sharp relies on two external components: The browsers and the Playwright driver.

await Playwright.InstallAsync();
var playwright = await Playwright.CreateAsync();

Playwright.InstallAsync() will download the required browsers. Playwright.CreateAsync() will create and launch the playwright driver.

await Playwright.InstallAsync();
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.LaunchAsync();
var page = await browser.NewPageAsync();
await page.GoToAsync("http://www.bing.com");
await page.ScreenshotAsync(path: outputFile);

To avoid downloading the browsers in runtime, you can install the playwright-sharp dotnet tool:

dotnet tool install playwright-sharp-tool -g
playwright-sharp install-browsers

By running these two commands, you can avoid having the await Playwright.InstallAsync(); line in your code.

Examples

Mobile and geolocation

This snippet emulates Mobile Safari on a device at a given geolocation, navigates to maps.google.com, performs an action, and takes a screenshot.

await Playwright.InstallAsync();

using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Webkit.LaunchAsync(false);

var contextOptions = playwright.Devices["iPhone 11 Pro"].ToBrowserContextOptions();
contextOptions.Locale = "en-US";
contextOptions.Geolocation = new Geolocation { Longitude = 12.492507m, Latitude = 41.889938m };
contextOptions.Permissions = new[] { ContextPermission.Geolocation };

var context = await browser.NewContextAsync(contextOptions);
var page = await context.NewPageAsync();
await page.GoToAsync("https://maps.google.com");
page.ClickAsync("text='Your location'"); //
await page.ScreenshotAsync("colosseum-iphone.png");

Evaluate in browser context

This code snippet navigates to example.com in Firefox, and executes a script in the page context.

await Playwright.InstallAsync();
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Firefox.LaunchAsync();

var context = await browser.NewContextAsync();
var page = await context.NewPageAsync();
await page.GoToAsync("https://www.example.com/");
var dimensions = await page.EvaluateAsync<Size>(@"() => {
    return {
        width: document.documentElement.clientWidth,
        height: document.documentElement.clientHeight,
    }
}");
Console.WriteLine(dimensions);

Intercept network requests

This code snippet sets up request routing for a WebKit page to log all network requests.

await Playwright.InstallAsync();
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Firefox.LaunchAsync();

var context = await browser.NewContextAsync();
var page = await context.NewPageAsync();
// Log and continue all network requests
await page.RouteAsync("**", (route, _) =>
{
    Console.WriteLine(route.Request.Url);
    route.ContinueAsync();
});

await page.GoToAsync("http://todomvc.com");

Monthly reports

Useful links

About

.NET version of the Playwright testing and automation library.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 97.8%
  • HTML 1.3%
  • Other 0.9%