问题标签 [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.
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)
c# - Puppeteer-sharp 加载页面时如何获取所有网络请求和完整响应数据?
我正在尝试通过 Puppeteer-sharp 获取所有网络请求(如在 chrome 开发工具网络选项卡中),就像它与 JS Puppeteer 一样:
我在 Puppeteer-sharp 的文档中找不到解决方案。
c# - Puppeteer 启动后软件冻结
我创建了一个小应用程序,它应该从 Internet trought 获取一些数据Puppeteer Sharp
,问题是在我实例化浏览器后,软件冻结而没有错误。
如您所见,我拥有Handler
该软件的所有属性:
这是哪里CHROME_PATH
:CHROME_PATH="C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"
我做错了什么?我也有最新版本的Chrome
and PuppeteerSharp
。
c# - 无法展开页面中的所有 div
我正在尝试扩展此页面中可用的所有 div。特别是显示的 div mostra partite
,例如:
查看 html 结构,我们有 class:event__header--no-my-games
用于折叠的 div,所以我做了:
第一个问题是该站点显示 7 个 div 已折叠,但我在divs
变量上得到 20 个 div。另外,当我这样做时:
没有扩展的div,我做错了什么?
puppeteer-sharp - 创建每张多页的 pdf
有没有一种简单的方法可以使用 PuppeteerSharp 创建每张多页的 pdf(根据从 Chrome 打印 pdf 时可用的选项),例如每张 1 / 2 / 4 / 6 / 9 / 16 页?
c# - Puppeteer Sharp:同时使用多个浏览器
现在我正在使用 puppeteer(NodeJS 库)将 HTML 转换为 PDF 文档。虽然这是“工作”,但我正在移植到 Puppeteer-Sharp(C# 库)。
我一切正常,但我有点担心同时运行多个浏览器。
例如,我在同一台机器上的两个不同进程中运行相同的代码:
我的问题:
这里有潜在的并发问题吗?
我的(有限)理解是该库使用 websockets 向 Chrome 发出指令,我不确定浏览器是否有可能相互“碰撞”。
本质上,我在问是否有可能接收到的 PDF 字节(通过await page.PdfAsync();
)将来自“其他”浏览器。
如果有什么安慰的话,浏览器是从每个进程的特定目录下载和启动的,所以从技术上讲,它不是 Chrome 的“相同”实例被启动两次(但它确实是)。
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,他们不认为问题出在他们身上 - 所以我很难理解是什么导致了这个问题,因为这两个浏览器源之间的行为不同。有没有人遇到过这样的问题或更多地了解根本原因可能是什么?
puppeteer-sharp - 拦截 iframe 发送的请求
我正在尝试拦截 Puppeteer-Sharp 使用的所有 Web 请求,但如果 IFrame 发送的请求位于页面上,则它无法正常工作。例如,在导航这个链接后,我点击了视频链接,因为视频在 iframe 中(也许这不是原因,这只是我的假设),iframe 发送的新 web 请求没有拦截,但其他的被拦截了. 当我在 Chrome 开发人员工具上检查它时,我能够看到我正在寻找的内容以及更多请求。
顺便说一句,我将请求拦截设置为 true,如下所示:
我注册了 PageRequest 事件,如下所示:
是否有任何其他设置或缺少设置?
c# - 使用 puppeteersharp 返回 Image base 64 而不将文件保存在硬盘中
我正在使用 puppeteersharp 将 HTML 转换为图像:
https://www.puppeteersharp.com/examples/index.html
这是获取 HTMl 并保存图像,然后我将返回 base64 图像,我希望返回图像 base64 而不将其保存在硬盘中。
这是代码:
puppeteer - Puppeteer:无头 Chromium 中的屏幕截图导致块状渐变
我有一个带有线性渐变的网页
background: linear-gradient(180deg, #7e7e7e 0%, #454545 100%);
当我用 PuppeteerSharp 截取 PNG 截图时,它看起来不错。
但是,如果我启用无头模式,渐变看起来真的很块状,好像在应用伽马校正时颜色精度会丢失,或者像 jpeg 压缩颜色量化......
我尝试传递--force-color-profile
参数,这导致不同的颜色,但块仍然存在。
有谁知道如何使用渐变提高 Puppeteer 屏幕截图的质量?