Search code examples
c#.netautomationpuppeteerpuppeteer-sharp

Frame # not found when using Puppeteer


I'm having issues with Puppeteer, I am trying to type in a textbox that is in an IFrame. I have created a simple repo with a code snippet, this one contains an IFrame with a tweet from Twitter.

await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultChromiumRevision);
var launchOptions = new LaunchOptions
{
    Headless = false,
    DefaultViewport = null
};
launchOptions.Args = new[] { "--disable-web-security", "--disable-features=IsolateOrigins,site-per-process" };
ChromeDriver = await Puppeteer.LaunchAsync(launchOptions);

page = await ChromeDriver.NewPageAsync();
await page.GoToAsync(Url, new NavigationOptions { WaitUntil = new WaitUntilNavigation[] { WaitUntilNavigation.Networkidle0 } });
var selectorIFrame = "#twitter_iframe";
var frameElement1 = await page.WaitForSelectorAsync(selectorIFrame);
var frame1 = await frameElement1.ContentFrameAsync();
var frameContent1 = await frame1.GetContentAsync();

var frame1 = await frameElement1.ContentFrameAsync(); fails with Frame # not found, see image with error below.

enter image description here

Versions:

  • PuppeteerSharp 7.0
  • .Net Framework 6
  • Git example

Solution

  • Try to disable some of the security features that can be disabled when launching puppeteer.

    Check in puppeteer chrome://flags/ in case there's something blocking iframe access, maybe is insecure content or maybe you have to be explicit about isolation trial.

    My 2 cents on this, it should allow it to access it from non secure

    Args = new[]
        {
            "--disable-web-security",
            "--disable-features=IsolateOrigins,site-per-process,BlockInsecurePrivateNetworkRequests",
            "--disable-site-isolation-trials"
        }