Best Puppeteer-sharp code snippet using PuppeteerSharp.ScreenshotOptions
LottoXClient.cs
Source: LottoXClient.cs
...146 private async Task TakeTopOrderScreenshot(string filepath)147 {148 Page page = await GetPage();149 await page.ScreenshotAsync(filepath,150 new ScreenshotOptions { Clip = new PuppeteerSharp.Media.Clip { Width = 1000, Height = 400, X = 1000, Y = 350 } });151 }152 private async Task TakeOrdersScreenshot(string filepath)153 {154 Page page = await GetPage();155 await page.ScreenshotAsync(filepath,156 new ScreenshotOptions { Clip = new PuppeteerSharp.Media.Clip { Width = 983, Height = 1440, X = 1017 } });157 }158 private async Task TakeHeaderScreenshot(string filepath)159 {160 Page page = await GetPage();161 await page.ScreenshotAsync(filepath,162 new ScreenshotOptions { Clip = new PuppeteerSharp.Media.Clip { Width = 1000, Height = 350, X = 250 } });163 }164 private async Task TakeQuantityColumnScreenshot(string filePath)165 {166 Page page = await GetPage();167 await page.ScreenshotAsync(filePath,168 new ScreenshotOptions { Clip = new PuppeteerSharp.Media.Clip { Width = 65, Height = 350, X = 477, Y = 400 } });169 }170 private async Task TakePortfolioScreenshot(string filePath)171 {172 Page page = await GetPage();173 await page.ScreenshotAsync(filePath,174 new ScreenshotOptions { Clip = new PuppeteerSharp.Media.Clip { Width = 1000, Height = 1440 } });175 }176 }177}...
SaveWebPage.xaml.cs
Source: SaveWebPage.xaml.cs
...44 var page = await browser.NewPageAsync(); //æå¼ä¸ä¸ªæ°æ ç¾45 await page.GoToAsync(this.tbox_Url.Text); //访é®é¡µé¢4647 //设置æªå¾é项48 PuppeteerSharp.ScreenshotOptions screenshotOptions = new PuppeteerSharp.ScreenshotOptions();49 //screenshotOptions.Clip = new PuppeteerSharp.Media.Clip() { Height = 0, Width = 0, X = 0, Y = 0 };//设置æªåªåºå50 screenshotOptions.FullPage = true; //æ¯å¦æªåæ´ä¸ªé¡µé¢51 screenshotOptions.OmitBackground = false;//æ¯å¦ä½¿ç¨éæèæ¯ï¼è䏿¯é»è®¤ç½è²èæ¯52 screenshotOptions.Quality = 100; //æªå¾è´¨é 0-100ï¼pngä¸å¯ç¨ï¼53 screenshotOptions.Type = PuppeteerSharp.ScreenshotType.Jpeg; //æªå¾æ ¼å¼5455 var fileName = Environment.CurrentDirectory + $"\\download\\{await page.GetTitleAsync()}.jpg";5657 if (System.IO.File.Exists(fileName))58 {59 fileName = fileName.Replace(".jpg", $"{DateTime.Now.ToString("ffff")}.jpg");60 }6162 await page.ScreenshotAsync(fileName, screenshotOptions);
...
Form1.cs
Source: Form1.cs
...47 //è·åæåçæ ç¾é¡µ48 var page = (await browser.PagesAsync()).Last();49 var path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop),"screenshot.jpg");50 //设置æªå¾é项51 ScreenshotOptions screenshotOptions = new ScreenshotOptions();52 //screenshotOptions.Clip = new PuppeteerSharp.Media.Clip() { Height = 0, Width = 0, X = 0, Y = 0 };//设置æªåªåºå53 screenshotOptions.FullPage = true; //æ¯å¦æªåæ´ä¸ªé¡µé¢54 screenshotOptions.OmitBackground = false;//æ¯å¦ä½¿ç¨éæèæ¯ï¼è䏿¯é»è®¤ç½è²èæ¯55 screenshotOptions.Quality = 100; //æªå¾è´¨é 0-100ï¼pngä¸å¯ç¨ï¼56 screenshotOptions.Type = ScreenshotType.Jpeg; //æªå¾æ ¼å¼ 57 await page.ScreenshotAsync(path,screenshotOptions);58 MessageBox.Show($"æªå¾å·²ç»ä¿åè³{path}");59 }60 private async void button3_Click(object sender, EventArgs e)61 {62 //è·åæåçæ ç¾é¡µ63 var page = (await browser.PagesAsync()).Last();64 var path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "screenshot.pdf");65 //设置PDFé项...
ScreenshotOptions.cs
Source: ScreenshotOptions.cs
...5using PuppeteerSharp.Media;6namespace PuppeteerSharp7{8 /// <summary>9 /// Options to be used in <see cref="Page.ScreenshotAsync(string, ScreenshotOptions)"/>, <see cref="Page.ScreenshotStreamAsync(ScreenshotOptions)"/> and <see cref="Page.ScreenshotDataAsync(ScreenshotOptions)"/>10 /// </summary>11 public class ScreenshotOptions12 {13 private static readonly Dictionary<string, ScreenshotType?> _extensionScreenshotTypeMap = new Dictionary<string, ScreenshotType?>14 {15 ["jpe"] = ScreenshotType.Jpeg,16 ["jpeg"] = ScreenshotType.Jpeg,17 ["jpg"] = ScreenshotType.Jpeg,18 ["png"] = ScreenshotType.Png,19 };20 /// <summary>21 /// Specifies clipping region of the page.22 /// </summary>23 /// <value>The clip.</value>24 public Clip Clip { get; set; }25 /// <summary>26 /// When <c>true</c>, takes a screenshot of the full scrollable page. Defaults to <c>false</c>.27 /// </summary>28 /// <value><c>true</c> if full page; otherwise, <c>false</c>.</value>29 public bool FullPage { get; set; }30 /// <summary>31 /// Hides default white background and allows capturing screenshots with transparency. Defaults to <c>false</c>32 /// </summary>33 /// <value><c>true</c> if omit background; otherwise, <c>false</c>.</value>34 public bool OmitBackground { get; set; }35 /// <summary>36 /// Specify screenshot type, can be either jpeg or png. Defaults to 'png'.37 /// </summary>38 /// <value>The type.</value>39 public ScreenshotType? Type { get; set; }40 /// <summary>41 /// The quality of the image, between 0-100. Not applicable to png images.42 /// </summary>43 /// <value>The quality.</value>44 public int? Quality { get; set; }45 /// <summary>46 /// When BurstMode is <c>true</c> the screenshot process will only execute all the screenshot setup actions (background and metrics overrides)47 /// before the first screenshot call and it will ignore the reset actions after the screenshoot is taken.48 /// <see cref="Page.SetBurstModeOffAsync"/> needs to be called after the last screenshot is taken.49 /// </summary>50 /// <example><![CDATA[51 /// var screenShotOptions = new ScreenshotOptions52 /// {53 /// FullPage = true,54 /// BurstMode = true55 /// };56 /// await page.GoToAsync("https://www.google.com");57 /// for(var x = 0; x < 100; x++)58 /// {59 /// await page.ScreenshotBase64Async(screenShotOptions);60 /// }61 /// await page.SetBurstModeOffAsync();62 /// ]]></example>63 [JsonIgnore]64 public bool BurstMode { get; set; } = false;65 internal static ScreenshotType? GetScreenshotTypeFromFile(string file)...
ScreenshotLoader.cs
Source: ScreenshotLoader.cs
...40 Width = Options.Value.ScreenshotWidth, 41 Height = Options.Value.ScreenshotHeight 42 });43 await page.GoToAsync(source);44 byte[] buffer = await page.ScreenshotDataAsync(new ScreenshotOptions() { Type = ScreenshotType.Png });45 return new OriginalData(MimeTypes.Png, new MemoryStream(buffer), new CacheSettings().ApplyLoaderOptions(Options.Value));46 }47}...
Program.cs
Source: Program.cs
...21 //设置æµè§å¨ç页é¢å¤§å°ð22 // await page.SetViewportAsync(new ViewPortOptions { Width = 1024, Height = 768 });23 await page.GoToAsync("http://www.baidu.com");24 // var html = await page.GetContentAsync();25 var stream = await page.ScreenshotStreamAsync(new ScreenshotOptions { FullPage = true, Type = ScreenshotType.Png });26 //å°é¡µé¢ä¿å为jpgå¾ç27 await page.ScreenshotAsync($@"{System.IO.Directory.GetCurrentDirectory()}\page_{Guid.NewGuid().ToString()}.jpg", new ScreenshotOptions() { FullPage = true, Type = ScreenshotType.Jpeg });28 //å°é¡µé¢ä¿å为pngå¾ç29 await page.ScreenshotAsync($@"{System.IO.Directory.GetCurrentDirectory()}\page_{Guid.NewGuid().ToString()}.png", new ScreenshotOptions() { FullPage = true, Type = ScreenshotType.Png });30 //å°é¡µé¢ä¿å为pdfæä»¶31 await page.PdfAsync($@"{System.IO.Directory.GetCurrentDirectory()}\page_{Guid.NewGuid().ToString()}_page.pdf");32 Console.WriteLine("为ä»ä¹ä¸è¡å¢ /åå¼å¼");33 }34 }35 }36 }37}...
StrategyPNG.cs
Source: StrategyPNG.cs
...12 {13 try14 { 15 // Configures the screenshot16 ScreenshotOptions screenshotOptions = new ScreenshotOptions17 {18 Type = ScreenshotType.Png,19 OmitBackground = true20 };21 // The file path to be saved22 string filename = $"{Environment.CurrentDirectory}/wwwroot/{DateTime.Now.ToString("yyyyMMdd_hhmmss")}.png";23 await PuppeteerPage.ScreenshotAsync(filename, screenshotOptions);24 25 // returns only the last element (filename + extension).26 return filename.Split('/')[^1];27 }28 catch (AggregateException ex)29 {30 return $"Couldn't generate the content due to error {ex.Message}";...
IPdfRenderer.cs
Source: IPdfRenderer.cs
...5public interface IPdfRenderer6{7 Task<byte[]> GetPdfByUrlAsync(string url, PdfOptions? options = null, TimeSpan? delay = null);8 Task<byte[]> GetPdfByHtmlAsync(string html, PdfOptions? options = null, TimeSpan? delay = null);9 Task<byte[]> GetScreenshotByUrlAsync(string url, ScreenshotOptions? options = null, TimeSpan? delay = null);10 Task<byte[]> GetScreenshotByHtmlAsync(string html, ScreenshotOptions? options = null, TimeSpan? delay = null);11}...
ScreenshotOptions
Using AI Code Generation
1using PuppeteerSharp;2using System;3using System.IO;4using System.Threading.Tasks;5{6 {7 static async Task Main(string[] args)8 {9 await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);10 var options = new LaunchOptions { Headless = true };11 using (var browser = await Puppeteer.LaunchAsync(options))12 {13 using (var page = await browser.NewPageAsync())14 {15 await page.ScreenshotAsync("google.png", new ScreenshotOptions { FullPage = true });16 }17 }18 }19 }20}
ScreenshotOptions
Using AI Code Generation
1using System;2using System.Threading.Tasks;3using PuppeteerSharp;4{5 {6 static void Main(string[] args)7 {8 Console.WriteLine("Hello World!");9 TakeScreenshot().Wait();10 }11 static async Task TakeScreenshot()12 {13 var options = new LaunchOptions { Headless = true };14 using (var browser = await Puppeteer.LaunchAsync(options))15 using (var page = await browser.NewPageAsync())16 {17 await page.ScreenshotAsync("google.png");18 }19 }20 }21}22using System;23using System.Threading.Tasks;24using PuppeteerSharp;25{26 {27 static void Main(string[] args)28 {29 Console.WriteLine("Hello World!");30 TakeScreenshot().Wait();31 }
ScreenshotOptions
Using AI Code Generation
1ScreenshotOptions options = new ScreenshotOptions()2{3};4await page.ScreenshotAsync("screenshot.jpg", options);5ScreenshotOptions options = new ScreenshotOptions()6{7};8await page.ScreenshotAsync("screenshot.png", options);9ScreenshotOptions options = new ScreenshotOptions()10{11};12await page.ScreenshotAsync("screenshot.webp", options);13ScreenshotOptions options = new ScreenshotOptions()14{15};16await page.ScreenshotAsync("screenshot.jpg", options);17ScreenshotOptions options = new ScreenshotOptions()18{19};20await page.ScreenshotAsync("screenshot.png", options);21ScreenshotOptions options = new ScreenshotOptions()22{23};24await page.ScreenshotAsync("screenshot.webp", options);25ScreenshotOptions options = new ScreenshotOptions()26{27};28await page.ScreenshotAsync("screenshot.jpg", options);29ScreenshotOptions options = new ScreenshotOptions()30{31};32await page.ScreenshotAsync("screenshot.png
ScreenshotOptions
Using AI Code Generation
1using PuppeteerSharp;2using System;3using System.Threading.Tasks;4{5 {6 static void Main(string[] args)7 {8 Console.WriteLine("Hello World!");9 TakeScreenshotAsync().Wait();10 }11 public static async Task TakeScreenshotAsync()12 {13 {14 };15 using (var browser = await Puppeteer.LaunchAsync(options))16 using (var page = await browser.NewPageAsync())17 {18 await page.ScreenshotAsync("google.png");19 }20 }21 }22}
ScreenshotOptions
Using AI Code Generation
1using System;2using System.IO;3using System.Threading.Tasks;4using PuppeteerSharp;5using PuppeteerSharp.Extensions;6using PuppeteerSharp.Contrib.Extensions;7using PuppeteerSharp.Contrib.Extensions.Pdf;8using PuppeteerSharp.Contrib.Extensions.Pdf.Options;9{10 {11 public static ScreenshotOptions WithFullPage(this ScreenshotOptions options)12 {13 options.FullPage = true;14 return options;15 }16 }17}18using System;19using System.IO;20using System.Threading.Tasks;21using PuppeteerSharp;22using PuppeteerSharp.Extensions;23using PuppeteerSharp.Contrib.Extensions;24using PuppeteerSharp.Contrib.Extensions.Pdf;25using PuppeteerSharp.Contrib.Extensions.Pdf.Options;26{27 {28 public static ScreenshotOptions WithFullPage(this ScreenshotOptions options)29 {30 options.FullPage = true;31 return options;32 }33 }34}35using System;36using System.IO;37using System.Threading.Tasks;38using PuppeteerSharp;
ScreenshotOptions
Using AI Code Generation
1{2};3var screenshot = await page.ScreenshotDataAsync(options);4var base64 = Convert.ToBase64String(screenshot);5File.WriteAllText("Screenshot.txt", base64);6{7};8var screenshot = await page.ScreenshotDataAsync(options);9var base64 = Convert.ToBase64String(screenshot);10File.WriteAllText("Screenshot.txt", base64);11{12};13var screenshot = await page.ScreenshotDataAsync(options);14var base64 = Convert.ToBase64String(screenshot);15File.WriteAllText("Screenshot.txt", base64);16{17};18var screenshot = await page.ScreenshotDataAsync(options);
ScreenshotOptions
Using AI Code Generation
1var options = new ScreenshotOptions { FullPage = true };2await page.ScreenshotAsync("screenshot.png", options);3var options = new ScreenshotOptions { FullPage = true };4await page.ScreenshotAsync("screenshot.png", options);5var options = new ScreenshotOptions { FullPage = true };6await page.ScreenshotAsync("screenshot.png", options);7var options = new ScreenshotOptions { FullPage = true };8await page.ScreenshotAsync("screenshot.png", options);9var options = new ScreenshotOptions { FullPage = true };10await page.ScreenshotAsync("screenshot.png", options);11var options = new ScreenshotOptions { FullPage = true };12await page.ScreenshotAsync("screenshot.png", options);13var options = new ScreenshotOptions { FullPage = true };14await page.ScreenshotAsync("screenshot.png", options);
How to get Puppeteer-Sharp working on an AWS Elastic Beanstalk running Docker (.NET Core 6)?
Single page PDF in puppeetersharp
how to disable images in puppeteer sharp?
How does puppeter sharp get the value of an attribute?
How to use PuppeteerSharp inside an UWP App?
Puppeteer Sharp: Multiple Browsers Concurrently
PuppeteerSharp Get Selected Dropdown
Dynamic website scraping not picking items in C#
How to generate images of web pages in a high performance environment?
Return Image base 64 without saving the file in hard drive, using puppeteersharp
For anybody still encountering this issue, the answer by jamie-tillman on this github issue solved it for me:
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
#####################
#PUPPETEER RECIPE based on https://github.com/hardkoded/puppeteer-sharp/issues/1180#issuecomment-1015532968
#####################
RUN apt-get update && apt-get -f install && apt-get -y install wget gnupg2 apt-utils
RUN wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' >> /etc/apt/sources.list
RUN apt-get update \
&& apt-get install -y google-chrome-stable --no-install-recommends --allow-downgrades fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf
######################
#END PUPPETEER RECIPE
######################
ENV PUPPETEER_EXECUTABLE_PATH "/usr/bin/google-chrome-stable"
WORKDIR /app
EXPOSE 80
EXPOSE 443
The path to the executable is automatically detected by Puppeteer. However, I still had to disable sandboxmode as seen in the snippet below:
var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = true,
Args = new [] {
"--disable-gpu",
"--disable-dev-shm-usage",
"--disable-setuid-sandbox",
"--no-sandbox"}
});
More useful information is found in the issue thread so I recommend skimming through it if you still have trouble.
Check out the latest blogs from LambdaTest on this topic:
In general, software testers have a challenging job. Software testing is frequently the final significant activity undertaken prior to actually delivering a product. Since the terms “software” and “late” are nearly synonymous, it is the testers that frequently catch the ire of the whole business as they try to test the software at the end. It is the testers who are under pressure to finish faster and deem the product “release candidate” before they have had enough opportunity to be comfortable. To make matters worse, if bugs are discovered in the product after it has been released, everyone looks to the testers and says, “Why didn’t you spot those bugs?” The testers did not cause the bugs, but they must bear some of the guilt for the bugs that were disclosed.
Have you ever struggled with handling hidden elements while automating a web or mobile application? I was recently automating an eCommerce application. I struggled with handling hidden elements on the web page.
Having a good web design can empower business and make your brand stand out. According to a survey by Top Design Firms, 50% of users believe that website design is crucial to an organization’s overall brand. Therefore, businesses should prioritize website design to meet customer expectations and build their brand identity. Your website is the face of your business, so it’s important that it’s updated regularly as per the current web design trends.
The rapid shift in the use of technology has impacted testing and quality assurance significantly, especially around the cloud adoption of agile development methodologies. With this, the increasing importance of quality and automation testing has risen enough to deliver quality work.
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!