首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在windows 7上使用puppeteerSharp

如何在windows 7上使用puppeteerSharp
EN

Stack Overflow用户
提问于 2020-01-14 08:12:47
回答 2查看 851关注 0票数 2

下面是PuppeteerSharp的要求,我不知道如何在Windows 7上使用PuppeteerSharp,有人可以给我看代码吗?

支持WebSocket库的最低Windows版本是Windows8和Windows 2012。阅读更多。如果你需要在Windows 7上运行System.Net.WebSockets.Client.Managed,你可以通过LaunchOptions.WebSocketFactory属性使用LaunchOptions.WebSocketFactory。,怎么做?

EN

回答 2

Stack Overflow用户

发布于 2020-10-07 11:56:07

对于那些想要更精确答案的人,这里是我在Windows 7上工作的代码。

代码语言:javascript
复制
private async void SaveToFile(string url)
{
    try
    {
        WebSocketFactory webSocketFactory = CreateWebSocket;
        LaunchOptions launchOptions = new LaunchOptions()
        {
            Headless = true,
            WebSocketFactory = webSocketFactory
        };
        var browser = await Puppeteer.LaunchAsync(launchOptions, product: Product.Chrome);
        var page = await browser.NewPageAsync();
        await page.GoToAsync(url);
        await page.PdfAsync("MyPdf.pdf", new PdfOptions() { Format = PuppeteerSharp.Media.PaperFormat.A4 });
        Task.WaitAll(new Task[2] {
            page.DisposeAsync().AsTask(),
            browser.DisposeAsync().AsTask() });
            }
         }
     }
     catch (Exception objException)
     {
         CommonMsgBox.Warning(objException.Message, "Error");
     }
}
private static async Task<System.Net.WebSockets.WebSocket> CreateWebSocket(Uri url, IConnectionOptions options, CancellationToken cancellationToken)
{
    var result = new System.Net.WebSockets.Managed.ClientWebSocket();
    result.Options.KeepAliveInterval = TimeSpan.Zero;
    await result.ConnectAsync(url, cancellationToken).ConfigureAwait(false);
    return result;
}

所有依赖项的System.Net.WebSockets.Managed都可以从NuGet下载。

编辑:木偶师有时会有奇怪的行为,最好不要用using包装它的组件,否则它会在某些情况下挂起。我已经从上面的代码中删除了这个包装。

票数 4
EN

Stack Overflow用户

发布于 2020-01-14 09:06:31

添加对“System.Net.WebSockets.Managed.ClientWebSocket”的引用

代码语言:javascript
复制
  private async Task<WebSocket> CreateWebSocket(Uri url, IConnectionOptions options, CancellationToken cancellationToken)
    {
        var result= new ClientWebSocket();
        result.Options.KeepAliveInterval = TimeSpan.Zero;
        await result.ConnectAsync(url, cancellationToken).ConfigureAwait(false);
        return result;
    }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59729761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档