Puppeteer Sharp - Examples
Puppeteer Sharp is a .NET port of the official Node.JS Puppeteer API.
Basic Usage
Take screenshots
using var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
var page = await browser.NewPageAsync();
await page.GoToAsync("https://www.google.com");
await page.ScreenshotAsync("screenshot.png");
You can also change the viewport before generating the screenshot:
await page.SetViewportAsync(new ViewPortOptions
{
Width = 500,
Height = 500
});
Generate PDF files
using var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
var page = await browser.NewPageAsync();
await page.GoToAsync("https://www.google.com");
await page.PdfAsync("output.pdf");
Use Locators
Locators provide a smart way to find elements with built-in auto-retry and auto-wait:
using var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
var page = await browser.NewPageAsync();
await page.GoToAsync("https://example.com");
// Click a button with auto-wait
await page.Locator("button.submit").ClickAsync();
// Fill an input
await page.Locator("input[name='email']").FillAsync("user@example.com");
See the Locators guide for more details.
Get Inner Text of an Element
using var page = await browser.NewPageAsync();
await page.GoToAsync("https://example.com");
var pageHeaderHandle = await page.QuerySelectorAsync("h1");
var innerTextHandle = await pageHeaderHandle.GetPropertyAsync("innerText");
var innerText = await innerTextHandle.JsonValueAsync();
Inject HTML
using var page = await browser.NewPageAsync();
await page.SetContentAsync("<div>My Receipt</div>");
var result = await page.GetContentAsync();
await page.PdfAsync("output.pdf");
Evaluate Javascript
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);
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("output.pdf");
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 Puppeteer.ConnectAsync(options);
using var page = await browser.NewPageAsync();
await page.GoToAsync(url);
await page.PdfAsync("output.pdf");