【问题标题】:How to use puppeteerSharp on windows 7如何在 Windows 7 上使用 puppeteerSharp
【发布时间】:2020-10-08 01:46:45
【问题描述】:

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

支持 WebSocket 库的最低 Windows 版本是 Windows 8 和 Windows Server 2012。阅读更多。 如果您需要在 Windows 7 上运行 Puppeteer-Sharp,您可以通过 LaunchOptions.WebSocketFactory 属性使用 System.Net.WebSockets.Client.Managed。,如何操作?

【问题讨论】:

    标签: puppeteer-sharp


    【解决方案1】:

    对于那些想要更准确答案的人来说,我的代码适用于 Windows 7。

    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 下载所有依赖项。

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

    【讨论】:

      【解决方案2】:

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

        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;
          }
      

      【讨论】:

      • 获取Puppeteer浏览器时如何使用?
      猜你喜欢
      • 1970-01-01
      • 2017-02-18
      • 1970-01-01
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多