PlaywrightExtraSharp 1.0.5-beta-1

This is a prerelease version of PlaywrightExtraSharp.
There is a newer version of this package available.
See the version list below for details.
dotnet add package PlaywrightExtraSharp --version 1.0.5-beta-1                
NuGet\Install-Package PlaywrightExtraSharp -Version 1.0.5-beta-1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="PlaywrightExtraSharp" Version="1.0.5-beta-1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add PlaywrightExtraSharp --version 1.0.5-beta-1                
#r "nuget: PlaywrightExtraSharp, 1.0.5-beta-1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install PlaywrightExtraSharp as a Cake Addin
#addin nuget:?package=PlaywrightExtraSharp&version=1.0.5-beta-1&prerelease

// Install PlaywrightExtraSharp as a Cake Tool
#tool nuget:?package=PlaywrightExtraSharp&version=1.0.5-beta-1&prerelease                

PlaywrightExtraSharp

NuGet Badge

Based on Puppeteer extra sharp and Node.js Playwright extra

Quickstart

Long way

// Initialization plugin builder
var playwrightExtra = new PlaywrightExtra(BrowserTypeEnum.Chromium); 

// Install browser
playwrightExtra.Install();

// Use stealth plugin
playwrightExtra.Use(new StealthPlugin());

// Launch the puppeteer browser with plugins
await playwrightExtra.LaunchAsync(new LaunchOptions()
{
    Headless = false
});

// Create a new page
var page = await playwrightExtra.NewPageAsync();
await page.GoToAsync("http://google.com");

Compact way

// Initialize, install, use plugin and launch
var playwrightExtra = await new PlaywrightExtra(BrowserTypeEnum.Cromium)
    .Install()
    .Use(new StealthPlugin())
    .LaunchAsync(new LaunchOptions()
    {
        Headless = false
    });
    
// Create a new page
var page = await playwrightExtra.NewPageAsync();
await page.GoToAsync("http://google.com");

Note

Because of how Playwright behaves with pages, you should only create new pages through PlaywrightExtra wrapper and not IBrowser. Please refer to examples above.

Context Persistence

There are 4 different ways to work with context in PlaywrightExtra:

  1. launch incognito (as default was) with permanent context
.LaunchAsync(new ()
    {
        Headless = false
    },
    persistContext: true)
  1. launch incognito with new context per page (so when page is closed, context is disposed)
.LaunchAsync(new ()
    {
        Headless = false
    },
    persistContext: false)
  1. launch persistent (user data dir is considered) with permanent context
.LaunchPersistentAsync(new ()
    {
        Headless = false
    },
    persistContext: true)
  1. launch persistent with new context per page
.LaunchPersistentAsync(new ()
    {
        Headless = false
    },
    persistContext: false)

User data directory

While running persistent mode you can specify path to user data directory.

When context is persisted, specify directory at launch:

.LaunchPersistentAsync(new ()
    {
        Headless = false
    },
    persistContext: true,
    userDataDir: "/path/to/userdir")

When context is created for each page (persistContext: false), specify directory at page creation:

var page = await _playwrightExtra.NewPageAsync(userDataDir: "/path/to/userdir");

Helpers

For convenience, you can use helper method when performing request:

await page.GotoAndWaitForIdleAsync("http://google.com/",
    idleTime: TimeSpan.FromMilliseconds(1000));

Basically this works like if you perform request with option WaitUntil = WaitUntilState.NetworkIdle

But unlike builtin method, you can specify amount of time to wait after last request has fired.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.7 3,229 11/4/2023
1.0.6 340 9/21/2023
1.0.5 204 9/7/2023
1.0.5-beta-1 314 7/1/2023
1.0.4 327 6/28/2023
1.0.3 170 6/20/2023
1.0.2 173 6/19/2023