Skip to content

ghasctl/puppeteer-sharp

This branch is 369 commits behind hardkoded/puppeteer-sharp:master.

Folders and files

NameName
Last commit message
Last commit date
Oct 26, 2022
Jul 18, 2022
Jan 12, 2022
May 2, 2022
Nov 17, 2022
Jan 12, 2022
Mar 25, 2021
Jul 16, 2021
Mar 10, 2018
Jun 14, 2018
Feb 15, 2021
Mar 22, 2021
Sep 30, 2017
Feb 15, 2022
Jan 12, 2022
Jan 12, 2022
Jan 12, 2022
Jan 12, 2022
Jan 12, 2022
Mar 27, 2021

Repository files navigation

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

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

You can also change the view port before generating the screenshot

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

snippet source | anchor

Generate PDF files

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

Inject HTML

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

snippet source | anchor

Evaluate Javascript

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

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.

Releases

No releases published

Packages

No packages published

Languages

  • C# 96.4%
  • HTML 2.3%
  • Other 1.3%