PhenX / puppeteer-sharp

Headless Chrome .NET API

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Puppeteer Sharp

NuGet Build status

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

Usage

Take screenshots

await Downloader.CreateDefault().DownloadRevisionAsync(chromiumRevision);
var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
    Headless = true
}, chromiumRevision);
var page = await browser.NewPageAsync();
await page.GoToAsync("http://www.google.com");
await page.ScreenshotAsync(outputFile));

You can also change the view port before generating the screenshot

await page.SetViewport(new ViewPortOptions
{
    Width = 500,
    Height = 500
});

Generate PDF files

await Downloader.CreateDefault().DownloadRevisionAsync(chromiumRevision);
var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
    Headless = true
}, chromiumRevision);
var page = await browser.NewPageAsync();
await page.GoToAsync("http://www.google.com");
await page.PdfAsync(outputFile));

Inject HTML

using(var page = await Browser.NewPageAsync())
{
    await page.SetContentAsync("<div>My Receipt</div>");
    var result = await page.GetContentAsync();
    await page.PdfAsync(outputFile);
    SaveHtmlToDB(result);
}

Evaluate Javascript

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

Monthly reports

Roadmap

Getting to all the 523 tests Puppeteer has, will be a long and fun journey. So, this will be the roadmap for Puppeteer Sharp 1.0:

0.1 First Minimum Viable Product

The first 0.1 will include:

  • Browser download
  • Basic browser operations: create a browser, a page and navigate a page.
  • Take screenshots.
  • Print to PDF.

0.2 Repository cleanup

This version won't include a new version. It will be about improving the repository:

  • Setup CI.
  • Create basic documentation (Readme, contributing, code of conduct).

0.3 Puppeteer

It will implement all Puppeteer related tests.

0.4 Page

It will implement all Page tests except the ones testing the evaluate method. As this will be quite a big version, I think we will publish many 0.3.X versions before 0.4.

0.5 Frames

It will implement all Frame tests.

0.6 Simple interactions

It will implement all the test related to setting values to inputs and clicking on elements.

0.X Intermediate versions

At this point, We will have implemented most features, except the ones which are javascript related. I believe there will be many versions between 0.6 and 1.0.

1.0 Puppeteer the world!

The 1.0 version will have all (or most) Puppeteer features implemented. I don't know if we'll be able to cover 100% of Puppeteer features, due to differences between both technologies, but we'll do our best.

Progress

  • Tests on Google's Puppeteer: 554.
  • Tests on Puppeteer Sharp: 55.
  • Passing tests: 55.

About

Headless Chrome .NET API

License:MIT License


Languages

Language:C# 93.6%Language:HTML 5.6%Language:JavaScript 0.8%Language:CSS 0.0%