Examples
Puppeteer Sharp is a .NET port of the official Node.JS Puppeteer API.
Basic Usage
Section titled “Basic Usage”Take screenshots
Section titled “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
Section titled “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
Section titled “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-waitawait page.Locator("button.submit").ClickAsync();
// Fill an inputawait page.Locator("input[name='email']").FillAsync("user@example.com");See the Locators guide for more details.
Get Inner Text of an Element
Section titled “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
Section titled “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
Section titled “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
Section titled “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
Section titled “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
Section titled “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");Made with love by Dario Kondratiuk