问题标签 [puppeteer-sharp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
846 浏览

puppeteer - Puppeteersharp 错误:导航失败,因为浏览器已断开连接

我正在尝试导航一个页面,然后我想访问一些页面元素,但我得到了我在下面提到的那些错误。我在下面分享了我的代码,你可以试试。我该如何解决这个问题?

Puppeteersharp 版本:2.0.3 操作系统:Windows 10 .Net 库:.Net Core 3.1

我为内部 catch 块收到的错误消息:

导航失败,因为浏览器已断开连接!(NetworkManager 无法处理 Network.requestWillBeSent。值不能为空。(参数“键”)。在 System.Collections.Concurrent.ConcurrentDictionary2.ThrowKeyNullException() 在 System.Collections.Concurrent.ConcurrentDictionary2.GetOrAdd(TKey key, Func2 valueFactory)在 PuppeteerSharp.Helpers.MultiMap2.Add(TKey key, TValue value) 在 PuppeteerSharp.Helpers.AsyncDictionaryHelper`2.GetItemAsync(TKey key) 在 PuppeteerSharp.NetworkManager.OnRequestAsync(RequestWillBeSentPayload e, String interceptionId) 在 PuppeteerSharp.NetworkManager.OnRequestWillBeSentAsync(RequestWillBeSentPayload e) 在 PuppeteerSharp.NetworkManager.Client_MessageReceived(Object sender, MessageEventArgs e))

我为外部 catch 块收到的错误消息:

协议错误(Runtime.evaluate):会话关闭。很可能页面已关闭。关闭原因:NetworkManager 无法处理 Network.requestWillBeSent。值不能为空。(参数“键”)。在 System.Collections.Concurrent.ConcurrentDictionary2.ThrowKeyNullException() 在 System.Collections.Concurrent.ConcurrentDictionary2.GetOrAdd(TKey key, Func2 valueFactory) 在 PuppeteerSharp.Helpers.MultiMap2.Add(TKey key, TValue value) 在 PuppeteerSharp.Helpers.AsyncDictionaryHelper `2.GetItemAsync(TKey key) at PuppeteerSharp.NetworkManager.OnRequestAsync(RequestWillBeSentPayload e, String interceptionId) at PuppeteerSharp.NetworkManager.OnRequestWillBeSentAsync(RequestWillBeSentPayload e) at PuppeteerSharp.NetworkManager.Client_MessageReceived(Object sender, MessageEventArgs e)

0 投票
1 回答
919 浏览

c# - Puppeteer-sharp 加载页面时如何获取所有网络请求和完整响应数据?

我正在尝试通过 Puppeteer-sharp 获取所有网络请求(如在 chrome 开发工具网络选项卡中),就像它与 JS Puppeteer 一样:

我在 Puppeteer-sharp 的文档中找不到解决方案。

0 投票
1 回答
165 浏览

c# - Puppeteer 启动后软件冻结

我创建了一个小应用程序,它应该从 Internet trought 获取一些数据Puppeteer Sharp,问题是在我实例化浏览器后,软件冻结而没有错误。

如您所见,我拥有Handler该软件的所有属性:

这是哪里CHROME_PATHCHROME_PATH="C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"

我做错了什么?我也有最新版本的Chromeand PuppeteerSharp

0 投票
1 回答
109 浏览

c# - 无法展开页面中的所有 div

我正在尝试扩展页面中可用的所有 div。特别是显示的 div mostra partite,例如:

在此处输入图像描述

查看 html 结构,我们有 class:event__header--no-my-games用于折叠的 div,所以我做了:

第一个问题是该站点显示 7 个 div 已折叠,但我在divs变量上得到 20 个 div。另外,当我这样做时:

没有扩展的div,我做错了什么?

0 投票
0 回答
123 浏览

puppeteer-sharp - 创建每张多页的 pdf

有没有一种简单的方法可以使用 PuppeteerSharp 创建每张多页的 pdf(根据从 Chrome 打印 pdf 时可用的选项),例如每张 1 / 2 / 4 / 6 / 9 / 16 页?

0 投票
1 回答
1020 浏览

c# - Puppeteer Sharp:同时使用多个浏览器

现在我正在使用 puppeteer(NodeJS 库)将 HTML 转换为 PDF 文档。虽然这是“工作”,但我正在移植到 Puppeteer-Sharp(C# 库)。

我一切正常,但我有点担心同时运行多个浏览器。

例如,我在同一台机器上的两个不同进程中运行相同的代码:

我的问题:

这里有潜在的并发问题吗?

我的(有限)理解是该库使用 websockets 向 Chrome 发出指令,我不确定浏览器是否有可能相互“碰撞”。

本质上,我在问是否有可能接收到的 PDF 字节(通过await page.PdfAsync();)将来自“其他”浏览器。

如果有什么安慰的话,浏览器是从每个进程的特定目录下载和启动的,所以从技术上讲,它不是 Chrome 的“相同”实例被启动两次(但它确实是)。

0 投票
0 回答
569 浏览

c# - 表单提交时 PuppeteerSharp 目标崩溃异常

我的应用程序中有一个 PuppeteerSharp 函数可以自动执行此网站:https ://dtucalculator.azurewebsites.net/

目标是通过提供 CPU 内核值和带有性能数据的 CSV(在此函数之前生成)来填写表格,然后提交表格,将生成的报告捕获为 PDF。

该函数看起来有点像这样:

该功能在我使用本地浏览器时运行良好,但在我使用无浏览器连接时出错。当我的应用部署到我的 Azure 应用服务时,需要无浏览器连接。

当 PuppeteerSharp 单击计算按钮时会产生 Target Crashed Exception,可以看到包装在 try-catch 中。我从错误消息中得到的详细信息如下:

页面无法处理 Inspector.targetCrashed。在 PuppeteerSharp.Page.Client_MessageReceived 的 PuppeteerSharp.Page.OnTargetCrashed() 处引发了“PuppeteerSharp.TargetCrashedException”类型的异常(对象发件人,MessageEventArgs e)

协议错误(Runtime.callFunctionOn):目标已关闭。(页面无法处理 Inspector.targetCrashed。在 PuppeteerSharp.Page.OnTargetCrashed() 在 PuppeteerSharp.Page.Client_MessageReceived(Object sender, MessageEventArgs e) 处引发了“PuppeteerSharp.TargetCrashedException”类型的异常)

我已经联系了 Browserless,他们不认为问题出在他们身上 - 所以我很难理解是什么导致了这个问题,因为这两个浏览器源之间的行为不同。有没有人遇到过这样的问题或更多地了解根本原因可能是什么?

0 投票
0 回答
201 浏览

puppeteer-sharp - 拦截 iframe 发送的请求

我正在尝试拦截 Puppeteer-Sharp 使用的所有 Web 请求,但如果 IFrame 发送的请求位于页面上,则它无法正常工作。例如,在导航这个链接后,我点击了视频链接,因为视频在 iframe 中(也许这不是原因,这只是我的假设),iframe 发送的新 web 请求没有拦截,但其他的被拦截了. 当我在 Chrome 开发人员工具上检查它时,我能够看到我正在寻找的内容以及更多请求。

顺便说一句,我将请求拦截设置为 true,如下所示:

我注册了 PageRequest 事件,如下所示:

是否有任何其他设置或缺少设置?

0 投票
1 回答
453 浏览

c# - 使用 puppeteersharp 返回 Image base 64 而不将文件保存在硬盘中

我正在使用 puppeteersharp 将 HTML 转换为图像:

https://www.puppeteersharp.com/examples/index.html

这是获取 HTMl 并保存图像,然后我将返回 base64 图像,我希望返回图像 base64 而不将其保存在硬盘中。

这是代码:

0 投票
0 回答
212 浏览

puppeteer - Puppeteer:无头 Chromium 中的屏幕截图导致块状渐变

我有一个带有线性渐变的网页

background: linear-gradient(180deg, #7e7e7e 0%, #454545 100%);

当我用 PuppeteerSharp 截取 PNG 截图时,它看起来不错。

但是,如果我启用无头模式,渐变看起来真的很块状,好像在应用伽马校正时颜色精度会丢失,或者像 jpeg 压缩颜色量化......

我尝试传递--force-color-profile参数,这导致不同的颜色,但块仍然存在。

有谁知道如何使用渐变提高 Puppeteer 屏幕截图的质量?