Skip to content

[ICDPSession] Page.startScreencast causes subsequent operations to fail #2943

@ben-biddington

Description

@ben-biddington

Hey I have been looking at getting Page.screencast to work and no matter what I try I find that sending Page.screencast succeeds, but any other operation after that point fails.

These two example differ only by this line:

await session.SendAsync("Page.startScreencast", new { format = "png", everyNthFrame = 1 });

The first one passes, the second one throws error.

using System;
using System.Threading.Tasks;
using NUnit.Framework;
using PuppeteerSharp;

[TestFixture]
public class AboutChromeDevToolsAndScreencasting
{
    [Test]
    public async Task Can_use_cdp_session_without_screencast()
    {
        await using var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = false });
        await using var page = await browser.NewPageAsync();

        var session = await page.CreateCDPSessionAsync();

        session.MessageReceived += (_, args) => { Console.WriteLine($"[EVENT] {args.MessageID} {args.MessageData}"); };

        await page.GoToAsync("https://www.rnz.co.nz");

        Assert.That(await page.GetTitleAsync(), Is.EqualTo("RNZ - NZ News, Current Affairs, Audio On Demand"));
    }

    [Test]
    public async Task Page_enable_causes_subsequent_operations_to_fail()
    {
        await using var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = false });
        await using var page = await browser.NewPageAsync();

        var session = await page.CreateCDPSessionAsync();

        /*

            Prints:

                [EVENT] Page.screencastVisibilityChanged {"visible":true}

        */
        session.MessageReceived += (_, args) => { Console.WriteLine($"[EVENT] {args.MessageID} {args.MessageData}"); };

        /*
            [!] This line causes all subsequent operations to fail

            PuppeteerSharp.NavigationException : Protocol error(Page.navigate): Target closed. (Connection failed to process System.Byte[].
                The JSON value could not be converted to System.String. Path: $.sessionId | LineNumber: 0 | BytePositionInLine: 10386..

        */
        await session.SendAsync("Page.startScreencast", new { format = "png", everyNthFrame = 1 });

        await page.GoToAsync("https://www.rnz.co.nz");

        Assert.That(await page.GetTitleAsync(), Is.EqualTo("RNZ - NZ News, Current Affairs, Audio On Demand"));
    }
}

What am I missing?

PuppeteerSharp 20.0.5

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions