Popularity
8.3
Growing
Activity
9.2
-
3,149
57
419

Programming language: C#
License: MIT License
Tags: UI Automation    
Latest version: v2.0.4

PuppeteerSharp alternatives and similar packages

Based on the "UI Automation" category.
Alternatively, view PuppeteerSharp alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of PuppeteerSharp or a related project?

Add another 'UI Automation' Package

README

Puppeteer Sharp

NuGet Build status Demo build status CodeFactor Backers xs:code

Puppeteer Sharp is a .NET port of the official Node.JS Puppeteer API.

Puppeteer-Sharp 3 is here!

Check out the blog post!

Useful links

Prerequisites

# How to Contribute and Provide Feedback

Some of the best ways to contribute are to try things out file bugs and fix issues.

If you have an issue or a question:

Contributing Guide

See this document for information on how to contribute.

Usage

Take screenshots

<!-- snippet: ScreenshotAsync -->

using var browserFetcher = new BrowserFetcher();
await browserFetcher.DownloadAsync();
await using var browser = await Puppeteer.LaunchAsync(
    new LaunchOptions { Headless = true });
await using var page = await browser.NewPageAsync();
await page.GoToAsync("http://www.google.com");
await page.ScreenshotAsync(outputFile);

snippet source | anchor <!-- endSnippet -->

You can also change the view port before generating the screenshot

<!-- snippet: SetViewportAsync -->

await Page.SetViewportAsync(new ViewPortOptions
{
    Width = 500,
    Height = 500
});

snippet source | anchor <!-- endSnippet -->

Generate PDF files

<!-- snippet: PdfAsync -->

using var browserFetcher = new BrowserFetcher();
await browserFetcher.DownloadAsync();
await using var browser = await Puppeteer.LaunchAsync(new LaunchOptions {Headless = true});
await using var page = await browser.NewPageAsync();
await page.GoToAsync("http://www.google.com"); // In case of fonts being loaded from a CDN, use WaitUntilNavigation.Networkidle0 as a second param.
await page.EvaluateExpressionHandleAsync("document.fonts.ready"); // Wait for fonts to be loaded. Omitting this might result in no text rendered in pdf.
await page.PdfAsync(outputFile);

snippet source | anchor <!-- endSnippet -->

Inject HTML

<!-- snippet: SetContentAsync -->

await using var page = await browser.NewPageAsync();
await page.SetContentAsync("<div>My Receipt</div>");
var result = await page.GetContentAsync();

snippet source | anchor <!-- endSnippet -->

Evaluate Javascript

<!-- snippet: Evaluate -->

await using var page = await browser.NewPageAsync();
var seven = await page.EvaluateExpressionAsync<int>("4 + 3");
var someObject = await page.EvaluateFunctionAsync<dynamic>("(value) => ({a: value})", 5);
Console.WriteLine(someObject.a);

snippet source | anchor <!-- endSnippet -->

Wait For Selector

using (var page = await browser.NewPageAsync())
{
    await page.GoToAsync("http://www.spapage.com");
    await page.WaitForSelectorAsync("div.main-content")
    await page.PdfAsync(outputFile));
}

Wait For Function

using (var page = await browser.NewPageAsync())
{
    await page.GoToAsync("http://www.spapage.com");
    var watchDog = page.WaitForFunctionAsync("()=> window.innerWidth < 100");
    await page.SetViewportAsync(new ViewPortOptions { Width = 50, Height = 50 });
    await watchDog;
}

Connect to a remote browser

var options = new ConnectOptions()
{
    BrowserWSEndpoint = $"wss://www.externalbrowser.io?token={apikey}"
};

var url = "https://www.google.com/";

using (var browser = await PuppeteerSharp.Puppeteer.ConnectAsync(options))
{
    using (var page = await browser.NewPageAsync())
    {
        await page.GoToAsync(url);
        await page.PdfAsync("wot.pdf");
    }
}

Monthly reports

Backers

Support us with a monthly donation and help us continue our activities. Become a backer.

Thanks

Thanks to JetBrains for a community Resharper license to use on this project.


*Note that all licence references and agreements mentioned in the PuppeteerSharp README section above are relevant to that project's source code only.