Search code examples
c#puppeteerpuppeteer-sharp

PuppeteerSharp passing parmaters to evaluateFunctionAsync()


Hi I scrape a web page in puppeteersharp and have the script below that get the image on a canvas item since getting the element does not return the background image in it:

var canvasItem = await reactElement.QuerySelectorAllAsync("canvas.flot-base");
            string canvasImage = "";
            if(canvasItem!=null)
                foreach(var canvas in canvasItem)
                {
                  canvasImage+=await canvas.EvaluateFunctionAsync("e=>e.toDataURL()");
                  await canvas.EvaluateFunctionAsync($"(e,{canvasImage})=>\{var ctx=e.getContext('2d');var img=new Image(); img.onload=function()\{ctx.drawImage(img,0,0);};img.src=canvasImage}", canvasImage);
                }

the base64 string is return successfully but i don't know if it's the correct way to pass it to the evaluateFunctionAsync() script. Can someone Explain it to me please? kind Regards


Solution

  • You don't need those brackets.

    await canvas.EvaluateFunctionAsync(@"(e, canvasImage)=> {
      var ctx=e.getContext('2d');
      var img=new Image(); 
      img.onload=function() {
        ctx.drawImage(img,0,0);};
        img.src=canvasImage
      }
    }", canvasImage);