问题标签 [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 - PupeeteerSharp 在 ServiceFabric 无状态服务中不起作用
我正在开发可以渲染 Javascript 网站的网络爬虫,因此我决定使用 PupeeteerSharp,它是流行的 Node.JS 无头 Chrome 浏览器 Pupeeteer API 的 .NET 端口。我在 Windows 10 开发机器上运行 Service Fabric 的本地开发集群,并且在我的解决方案中有一个无状态服务。
我Data
在服务项目的文件夹下创建了文件PackageRoot
夹并将.local-chromium
文件夹内容放在那里(包含chrome.exe
可执行文件),因此它部署为独立的服务数据包。
我还在ServiceManifest.xml
文件中放置了这个 XML 配置行:
<DataPackage Name="Data" Version="1.0.0" />
到目前为止,它看起来不错,无头浏览器内容已正确复制到 SFCluster 数据包目录。
然后在我的无状态服务代码中,我尝试调用 Pupeeteer chromium 可执行文件,如下所示:
在这一行中:using (var page = (await browser.NewPageAsync()))
我的代码(线程)只是挂起而不返回,在调试控制台中我看到许多线程退出,但没有发生异常。我之前在修复有关适当复制 chromium 文件夹内容的其他一些错误时遇到 System.IO.FileNotFoundException,但现在这些错误已经消失,因此代码似乎找到了 .exe,但不知何故无法启动 PupeeterSharp 的无头模式。
这是否意味着我不能简单地使用 Service Fabric 的本机应用程序模型运行外部 .exe 铬二进制文件?我应该改用 Docker 和 Linux 容器吗?
c# - Puppeteer - 在多个测试中运行 1 个浏览器实例
跨多个TestFixture
chrome 浏览器的新实例被初始化。但我只想拥有 1 个浏览器实例,并且所有测试都可以是我认为性能更高的新选项卡。
推荐的方法是什么?
我在 repo 上问过,但作者将我重定向到这里。
c# - puppeteer-sharp 用于服务器端 HTML 到 PDF 的转换
我发现 puppeteer sharp 是服务器端、HTML 到 PDF 转换的最佳方式,因为它使用和下载最新的 chrome 并在后台无头运行,因此转换是一流的。桌子和其他一切都完美呈现。
但是对于在服务器上运行,应该如何管理并发,因为我认为每个网站用户的转换请求都会启动另一个 chrome 实例。puppeteer sharp 如何管理并发。
最好将其拆分为单独的 Web 服务并将转换请求排入队列并传递所有与 pdf 相关的请求以逐个提供服务,而不是在多个 chrome 实例的 Web 服务器上遇到并发或资源问题。
azure - PupeteerSharp:协议错误(Runtime.callFunctionOn):会话关闭
我正在尝试执行以下代码:
这在本地工作,但在部署到 docker 容器时在最后一行失败。它失败并显示以下消息:
PrintToPdf 在阶段加载页面 1 失败,并显示消息协议错误 (Runtime.callFunctionOn):会话已关闭。很可能页面已关闭。关闭原因:NetworkManager 无法处理 Network.requestWillBeSent。值不能为空。(参数“键”)。在 System.Collections.Concurrent.ConcurrentDictionary 2.ThrowKeyNullException() at System.Collections.Concurrent.ConcurrentDictionary
2.GetOrAdd(TKey key, Func 2.Add(TKey 2 valueFactory) at PuppeteerSharp.Helpers.MultiMap
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)
这个错误是什么意思,我该如何修复/解决它?
如果有任何区别,这将在由 azure 容器实例支持的 azure 函数中运行
c# - 如何将 CDPSession 与 puppeteersharp 拦截请求一起使用
全部
我使用 puppeteersharp ,需要拦截请求和响应,当使用打击代码时:
当 url 为 Navigation 时,无法获取内容,错误:
报错链接:https ://github.com/puppeteer/puppeteer/issues/2258
该链接gvie围绕该错误的文章:Using Chrome Devtools Protocol with Puppeteer https://medium.com/@jsoverson/using-chrome-devtools-protocol-with-puppeteer-737a1300bac0
但是将 Chrome Devtools 协议与 PuppeteerSharp 一起使用,我遇到了错误:
设置参数时:
以上是我测试的所有格式,都是错误的,那么arg格式是什么?
谢谢。
c# - 如何使用 puppeteer-sharp touchStart 和 touchEnd 和 touch move
puppeteer-sharp API 中的触摸屏只提供了一种方法:TapAsync。但我需要拖动(touchStart 和 touchEnd 和 touch move)。我怎样才能做到这一点?
browser - PuppeteerSharp 向本地主机请求?
我不确定这是否是一个纯粹的 PuppeteerSharp 问题,或者它是否属于一般的 puppeteer。
我设置了一个带有页面和请求拦截的浏览器。当浏览器导航到像谷歌这样的外部网页时,我订阅了页面请求事件,现在我收到了一些对 localhost 到不同端口的请求。我自己编写了一个带有白名单的防火墙,我问自己是否必须允许这些请求到 localhost?我没有注意到任何区别。当我阻止这些时有什么区别?
puppeteer-sharp - IIS 中的 PuppeteerSharp
我面临着一个令人讨厌的情况。我们尝试在我们的应用程序中使用 PuppeteerSharp 来生成背景 PDF,虽然它在开发模式下运行良好,但在生产环境中却不起作用。
该应用程序是一个 WebAPI 2.0 站点、.NET4.7.1、Windows 10 机器。我在这两种环境之间看到的主要区别是:
- 构建发布而不是调试:在调试或发布模式下从控制台应用程序调用我的代码似乎以相同的方式工作
- 在开发中托管在 IIS Express 中,在生产中托管完整的 IIS
我们使用以下代码:
page.GoToAsync
永远不会返回,并最终超时。
编辑:
- 我
false
在所有异步调用中将 ConfigureAwait 设置为 - 我尝试使用
AspNetWebSocketTransport.AspNetTransportFactory
运输工厂,它似乎也不起作用
c# - 如何使用 Puppeteer Sharp 上传文件?
我正在使用Puppeteer Sharp来测试我的网络应用程序。我的网络应用程序有一个按钮,可以触发<input type="file">
让用户选择要上传的 CSV 文件。
通过 Puppeteer Sharp 进行测试时,如何使用它来上传文件?仅单击按钮是不够的,因为我需要为文件浏览对话框提供文件的路径。
c# - 使用 Puppeteer-sharp 捕捉 A2HS 对话
我想做一个无头 PWA 安装。
使用 Puppeteer-sharp,我能够单击内容中的 PWA 安装按钮以调出 A2HS 对话框。
我认为我可以使用“Dialog”类处理此对话框,因为 beforeinstallprompt 对象正在使用 prompt() 显示它,但我不能。
如何捕捉 A2HS 对话框?
[A2HS 对话框]
https://developers.google.com/web/updates/images/2018/06/a2hs-dialog-cropped.png
这是我的代码。(它可以捕获 window.prompt() 和 window.confirm()。)