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

puppeteer - 如何查找或选择合适的 Chrome/Chromium 修订号?

我想不出一个好方法来确定与Puppeteer Sharp一起使用的合适的修订号。

我所做的是使用“ OmahaProxy - Google Chrome ”网站上的版本查找功能。我查找了我在计算机上运行的 Chrome 版本。[这似乎是一个合理的起点。]我假设(猜测)版本信息中显示的“分支基本位置”是一个修订号。

然后,我打开Chromium 连续构建存档,并围绕我从“OmahaProxy”站点找到的修订号查找修订版本。

有没有更好的方法来查找或选择合适的修订号?

0 投票
1 回答
1075 浏览

puppeteer-sharp - 如何使用自定义下载文件夹和启动器可执行路径?

我想在特定路径下下载 Chromium。但是为了能够使用同一路径下的可执行文件启动 Chromium,我必须构建一个可执行路径,这似乎有点笨拙。我希望有一个更好的方法我目前正在失踪。这基本上是我的代码的相关版本:

特别是看起来笨拙的是需要添加"\Win32-{1}\chrome-win32"路径的一部分。我期待Puppeteer.LaunchAsync“知道”如何在给定修订号的情况下找到可执行文件,因为它“应该”已经“知道”我已经指示 Puppeteer Sharp 将 Chromium 构建下载到自定义目录,我认为它有足够的信息来也确定平台。

0 投票
0 回答
1059 浏览

puppeteer-sharp - puppeteer-sharp GoToAsync 从未解决

我正在尝试使用 puppeteer-sharp 测试 Angular SPA,但 GoToAsync 永远无法解决。任何帮助表示赞赏

0 投票
1 回答
3639 浏览

c# - 如何在 PuppeteerSharp 中等待异步函数评估

在 Puppeteer 中,您可以评估异步函数:

PuppeteerSharp 中是否有等价物?使用EvaluateFunctionAsync,任务在承诺解决之前完成:

0 投票
1 回答
463 浏览

c# - SetContentAsync 在 PdfDataAsync 之前未完成

考虑以下代码:

  • pdfData有时设置为完全有效byte[],但有时只是部分结果(即实际 17899 字节的 1088 字节)。

整个片段永远不会抛出任何Exceptions东西,也不会以任何其他方式从运行到完成中断。

如果我在 处设置断点await page.SetContentAsync(content);并在允许继续执行之前等待一秒钟,pdfData则始终会填充完整且正确的数据。

此外,当SlowMo=50LaunchOptions(见下文)时,pdfData被准确设置的机会正在增加。当然,这只是问题所在的提示,而不是问题的解决方案。

在我看来,这需要一些时间才能完成,并且在方法完全完成之前SetContentAsync以某种方式完成。await我错过了什么,做错了什么还是这是一个错误Puppeteer Sharp

0 投票
1 回答
1329 浏览

c# - BrowserFetcher 使用 await 退出应用程序

Puppeteer-Sharp用来下载html一个站点,我创建了一个方法,该方法GetHtml返回一个包含站点内容的字符串。问题是当我拨打电话时await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);

应用程序退出没有任何错误,这是我的代码:

所以每次foreach迭代都会生成一个下载数据的url,并且该方法GetHtml应该html在到达时返回但是应用程序退出(没有错误)var html = ..,这是代码GetHtml

0 投票
1 回答
802 浏览

javascript - Puppeteer Sharp:加载内容时设置假路径?

我正在使用 page.SetContentAsync(myHtml); Puppeteer Sharp 中的方法来加载一些未托管在任何服务器上的 HTML。

不幸的是,在我的 HTML 中,我需要使用一个 JS 脚本(我不能轻易修改它),它依赖于location.pathname包含至少一个斜杠的值/(它对其进行一些解析),否则它会崩溃。

有没有办法通过 Puppeteer 本身或简单的 JavaScript 来覆盖/伪造 的值location.pathname

0 投票
2 回答
1917 浏览

c# - 有没有办法向 PuppeteerSharp 网络驱动程序添加 chrome 扩展?

如何将 chrome 扩展加载到 PuppeteerSharp 的驱动程序,类似于 Selenium 的选项:

0 投票
2 回答
925 浏览

puppeteer - 检测渲染事件/布局更改(或任何知道页面何时停止“更改”的方式)

我正在使用 Puppeteer(实际上是 PuppeteerSharp,但 API 相同)从我的应用程序中截取网页的屏幕截图。

问题是页面加载后通过 JavaScript 进行了几次布局更改,因此在看到页面的“最终”呈现版本之前经过了几秒钟。

目前我只是在截屏前等待“安全”的几秒钟,但这显然不是一个好方法,因为机器上的暂时性能下降可能会导致渲染不完整。

由于 puppeteer 在后台使用 Chromium,有没有办法拦截 Chromium 的布局/渲染事件(就像你可以在 Chrome 的 DevTools 控制台中做的那样)?或者,真的,知道页面何时停止“变化”的任何其他方式(我的意思是视觉上)

编辑,更多信息:内容是动态的,所以我事先不知道它将绘制什么以及如何绘制。基本上,它是一个绘制不同图表/表格/图像/等的框架。(不幸的是不是开源的)。然而,通过使用 Chrome DevTools 中的“性能”工具进行测试,我注意到在页面完成渲染后,时间轴中的所有活动都会停止,所以如果我可以访问该信息,那就太好了。不幸的是,在 Puppeteer(我可以看到)中做到这一点的唯一方法是使用“跟踪”功能,但这并不是实时运行的。相反,它将跟踪转储到文件,并且缓冲区太大而无法使用(在我的页面已经完成渲染后文件仍然是 0 字节,当我调用“stopTracing”时它只会刷新到磁盘)。我需要的是实时访问 puppeteer 的跟踪功能,例如通过事件或内存流,但这似乎不受 API 支持。有什么办法吗?

0 投票
1 回答
1198 浏览

puppeteer-sharp - 无法读取 document.cookie 客户端

Javascript 给出错误:“DOMException:无法从 'Document' 读取 'cookie' 属性:拒绝访问此文档。”

我将所有 cookie 设置为使用 HttpOnly = false ,但它似乎没有帮助。如果我在没有 puppeteer 的情况下调用该页面,该页面将完美运行。

我目前从初始化 puppeteer 的请求中复制所有会话变量: