问题标签 [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 投票
1 回答
179 浏览

javascript - 如何将 puppeteer Array.from().map() 从 C# 转换为 JavaScript

我在 C# 中使用此代码,它工作正常。

但是当我尝试使用此代码转换 JavaScript 时,它不起作用。

我怎么解决这个问题。

0 投票
0 回答
344 浏览

puppeteer - 需要在目录中显示页码

我只是在打印 HTML 页面,我需要在目录中显示与标题相反的页码。我调查了很多,但找不到合适的解决方案。在调查时我发现了目标计数器,但它对我不起作用。似乎它明确提供了对PrinceXML的支持,但我使用puppeteer将 HTML 内容转换为 PDF,因为 PrinceXML 不支持 .Net Core,所以我选择了 Puppeteer Sharp。那么有什么方法可以在目录中获取页码。

在此处输入图像描述

0 投票
0 回答
487 浏览

puppeteer - 使用 Chromium 直接渲染到我自己的“画布”(例如 GDI+)

首先,快速描述最终目标:

我正在构建一个跨平台、基于 .NET Core 的打印应用程序。此应用程序将能够使用自定义页面设置打印各种文件类型,例如页眉、页脚和页边距。一个关键特性是它支持多页向上(例如,一张横向纸与两个并排呈现的纵向页面......称为“2up”)。

示例 2up 页面

打印 HTML 很重要,不仅因为打印 HTML,而且我想将所有基于 HTML 的出色语法高亮用于源代码(例如 www.prismjs.com)。

该应用程序基本上完成了,但有一个主要问题:我无法让 HTML 渲染得足够好。到目前为止,我已经实现了源代码打印三种方式:

1) 使用我自己的行号和换行引擎作为纯文本。这对于我可以扔给它的所有东西都非常有效,但它不支持语法突出显示。2) 使用Html-Renderer( https://github.com/ArthurHub/HTML-Renderer/issues ) 一个基于 OSS .NET 的 Html 渲染器。这个实现是最弱的,因为 Html-Renderer 的 CSS 支持真的很弱。它几乎prismjs无法highlightjs' generate. 3) Using通过LiteHtmlSharp. 这是非常有前途的,我几乎可以让它与一些主要的黑客一起工作,但litehtml也不支持关键的、现代的、HTML/CSS 特性。

既不也不Html-Renderer支持litehtmlCSSpage-break-before功能,当与它结合使用时,media print我可以确保行不会在页面之间拆分。

我真正想要使用的是 Chromium 渲染引擎。litehtml为这类问题提供了一个很棒的 AP​​I:它在需要渲染时调用我,我使用 GDI+ 绘制(文本、表格边框、图像等)。我的梦想是在 Chromium(CEF、Puppeteer、???)中找到提供类似 API 的东西。

或者,另一种选择,一个 API 可以让我传入 GDI+ 图形(或 HDC),然后渲染器将渲染到该表面。

Html-Renderer我测量计算 # 个这样的页面。

我的页面渲染代码(例如OnPaint)如下所示:

代码htmllite如下OnPaint所示:

在这种情况下,调用会litehtml.Document.Draw导致我的应用程序中出现一堆回调,我使用与调用相同Graphics的方法来处理这些回调OnPaint

大多数关于 CEF 和 Chromium 的讨论都指向ScreenshotAsync等……因为我需要渲染到 PRINTERS HDC(或 GDI+)并且位图会降低质量,所以不会这样做。

我已经倾注了 Chromium 源代码,但我找不到对 CEF/Chromium 说“将第 1 页(定义为高度/宽度)渲染到此 GDI+ 图形对象”然后“渲染第 2 页......”等的明显方式...打印支持(以及如何集成 pdfium!)。

Chromium 问题311308表明我已经被水洗了,直到重新开始这项工作。

注意:我在我的应用程序中拥有完全访问权限nodejs。我已经构建了一个 dotnet/nodejs 桥,这就是我如何通过 prismjs 将源代码文件的原始文本文件转换为格式丰富、行编号、语法突出显示的 html。puppeteer这意味着如果我能找出正确的 API,我就可以轻松使用/Headless Chrome。

有没有人有可能有帮助的建议?如果不是大心脏手术,我愿意为 Chromium 做出贡献。

0 投票
1 回答
1124 浏览

c# - 我收到异常导航失败,因为浏览器已断开连接

我遇到了一个例外:导航失败,因为浏览器已断开连接。

在我的代码被执行后,它将被using 块关闭。

浏览器断开连接的主要原因是什么?

这是我得到的例外:

在迭代 0 中查找 Google id 78659 的导航 url、屏幕截图和传出 url 时出错,错误消息是:PuppeteerSharp.NavigationException:导航失败,因为浏览器已断开连接!(NetworkManager 无法处理 Fetch.requestPaused。帧 6CCD5A551750D9DF102ABCF53D90B6EB 未找到。在 PuppeteerSharp.Helpers.AsyncDictionaryHelper`2.<>c__DisplayClass4_0.b__0()

这是我的代码:

0 投票
1 回答
295 浏览

c# - 使用 puppeteersharp 在 C# 中右键单击网站中的按钮

需要使用 puppeteersharp 在 C# 中的网站中执行右键单击。尝试了以下代码,但它不起作用:

await page.ClickAsync({ button: 'right'}"[class*='_16aPYHYIOVxzNYTA4BGnwS NJVykX0WljoRws2qTYI5G _3FwRpWCSns-2PgbiDhEErG']");

0 投票
2 回答
658 浏览

puppeteer-sharp - 如何在 Windows 7 上使用 puppeteerSharp

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

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

0 投票
1 回答
1888 浏览

c# - 使用 puppeteer-sharp将文本抓取到一个类中

我目前正在尝试<span>使用 Puppeteer .NET 恢复 HTML 页面上的标签之间的文本,但我不能。这是我要恢复的部分:

我已经尝试过该功能EvaluateFunction,但尝试在控制台中打印它却一无所获

我不再考虑确切的 Java 请求,但这一定不是问题,因为我通过检查元素复制它并复制完整路径 JS(在 Chrome 中)。

0 投票
1 回答
795 浏览

c# - Puppeteer 在不设置断点时呈现空白页

我正在使用最新版本,PuppeteerSharp并且在未设置断点时出现空白页呈现问题。

如果我只是让逻辑通过而不中断它,那么代码似乎没有正确“等待”。

这是代码:

难道我做错了什么?当我得到空白页时,我得到了预期的页数。诡异的。

编辑:图像被渲染但不是文本。另外,我应该提到我正在使用他们网站上的 Google Front。所以可能是woff文件没有下载。

有没有办法等到page下载所有远程内容后再继续?

0 投票
0 回答
615 浏览

puppeteer-sharp - Puppeteer LaunchAsync 抛出异常

我有一个现有的 ASPNET Web 应用程序。前端是 HTML/JavaScript,后端是 WebAPI 2。我们一直在使用 NRECO.PDFGenerator 将 PDF 拖放给用户,这使用 QT 浏览器,调试变得很麻烦。我找到了 PuppeteerSharp 并想试试看。

我使用 nuget 安装了这些库,向我的一个 Web Api 控制器添加了一个 Async 方法,但是当我调用它时,LaunchAsync 方法就崩溃了。

我不知道从这里去哪里。这是控制台输出。还有更多...

导航 google 线程 0x3418 已退出,代码为 0 (0x0)。抛出异常:System.Web.dll 中的“System.NullReferenceException”抛出异常:mscorlib.dll 中的“System.NullReferenceException”

该项目正在使用框架 4.7.2

解决方案

涉及到 Async 方法的所有内容也必须是 Async。此外,传递空参数也会导致问题。

这是一个代码示例。

0 投票
2 回答
432 浏览

c# - 如何在弹出窗口中单击按钮?(木偶锋利)

当我单击按钮时,弹出页面正在打开。我必须点击它的按钮。我该怎么做?