Puppeteer Sharp Versions Save

Headless Chrome .NET API

v17.0.0b

1 week ago

Breaking change

Hopefully these features are not that popular

What's new

What's Changed

New Contributors

Full Changelog: https://github.com/hardkoded/puppeteer-sharp/compare/v16.0.0...v17.0.0

v16.0.0

4 weeks ago

Breaking changes

  • Request.Failure was renamed to Request.FailureText.
  • Request.RequestId was renamed to Request.Id
  • CloseReason, IsClosed and TargetType were removed from ICDPSession.

What's new

What's Changed

Full Changelog: https://github.com/hardkoded/puppeteer-sharp/compare/v15.1.0...v16.0.0

v15.1.0

1 month ago

What's new

What's Changed

Full Changelog: https://github.com/hardkoded/puppeteer-sharp/compare/v15.0.0...v15.1.0

v15.0.0

1 month ago

What's epic!

Puppeteer Sharp is now using the new headless mode by default! If you need to use the old headless mode, you can pass HeadlessMode = HeadlessMode.Shell into the LaunchOptions. As part of this change, we will also download an extra Chrome browser, chrome-headless-shell by default, and use it for the old headless mode.

Breaking changes

What's new

What's Changed

Full Changelog: https://github.com/hardkoded/puppeteer-sharp/compare/v14.1.0...v15.0.0

v14.1.0

2 months ago

Important fix

What's Changed

Full Changelog: https://github.com/hardkoded/puppeteer-sharp/compare/v14.0.0...v14.1.0

v14.0.0

3 months ago

Breaking changes

What's New

You can now wait for a device prompt!

var promptTask = Page.WaitForDevicePromptAsync();
await Task.WhenAll(
    promptTask,
    Page.ClickAsync("#connect-bluetooth"));

var devicePrompt = await promptTask;
await devicePrompt.SelectAsync(
    await devicePrompt.WaitForDeviceAsync(device => device.Name.Contains("My Device")).ConfigureAwait(false)
);

Now you can use AddRequestInterceptor instead of the Request page and give the ContinueAsync, AbortAsync and RespondAsync different priorities.

Page.AddRequestInterceptor(request =>
{
    if (request.Url.EndsWith(".css"))
    {
        var headers = request.Headers;
        headers["xaction"] = "continue";
        return request.ContinueAsync(new Payload() { Headers = headers, }, 4);
    }
    return request.ContinueAsync(new Payload(), 0);
});

Page.AddRequestInterceptor(request =>
{
    if (request.Url.EndsWith(".css"))
    {
        Dictionary<string, object> headers = [];
        foreach (var kvp in request.Headers)
        {
            headers.Add(kvp.Key, kvp.Value);
        }
        headers["xaction"] = "respond";
        return request.RespondAsync(new ResponseData() { Headers = headers, }, 2);
    }
    return request.ContinueAsync(new Payload(), 0);
});

AddRequestInterceptor will ensure that these new async listeners are executed one after the other.

Full Changelog: https://github.com/hardkoded/puppeteer-sharp/compare/v13.0.2...v14.0.0

v13.0.2

4 months ago

What's Changed

Full Changelog: https://github.com/hardkoded/puppeteer-sharp/compare/v13.0.1...v13.0.2

v13.0.1

5 months ago

What's Changed

Full Changelog: https://github.com/hardkoded/puppeteer-sharp/compare/v13.0.0...v13.0.1

v13.0.0

5 months ago

Breaking changes

We have a few more breaking changes in our effort to catch puppeteer.

What's New

What's Changed

Full Changelog: https://github.com/hardkoded/puppeteer-sharp/compare/v12.0.0...v13.0.0

v12.0.0

7 months ago

New Browser Version

Chrome version is now 117.0.5938.62

Breaking change.

Small breaking change. But as it's a breaking change, we need to bump major. LaunchOption.TargetFilter now expects a Target instead a TargetInfo.

What's Changed

Full Changelog: https://github.com/hardkoded/puppeteer-sharp/compare/v11.0.6...v12.0.0