问题标签 [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 回答
3761 浏览

puppeteer - Puppeteer Sharp - 获取包含 textContent 的元素

我正在尝试研究如何有效地从包含特定字符串的页面中获取元素。

该元素位于<a>标签中,但它的类/ID 是随机生成的。

我能做到这一点的唯一方法是遍历每个<a>标签并检查 textContent 是否匹配。

<a>Match this text foo</a>

我也尝试过使用 xPath 表达式,但是我可以弄清楚如何使用返回的元素。

//a[contains(text(),'Match this text')]

有人有更好的解决方案吗?

0 投票
0 回答
584 浏览

c# - 在 AWS Lambda 函数中使用 PuppeteerSharp

我有亚马逊 Echo 的技能。lambda 函数是用 C#/.Net Core 编写的,并托管在 AWS 上。我现在需要使用使用 PuppeteerSharp 的功能来扩展它。我的第一个问题是它会下载 chromium 并默认将其放在应用程序的目录中。这给了我一个错误,因为文件系统是只读的。然后我尝试了包 HeadlessChromium.Puppeteer.Lambda.Dotnet,但我得到的技能太大而无法作为 lambda 函数上传,因为它现在嵌入了铬。

我现在正在尝试使用 BrowserFetchOption 覆盖默认的 puppeteer 下载路径。这允许我将 AWS 上的 chromium 下载到系统临时路径,但是 Puppeteer 找不到它。当我尝试启动 puppeteer 时,我需要将 ExecutablePath 添加到 LaunchOptions 对象。我已经在 windows 下本地测试了它并且它可以工作,我现在只需要编写一些通用代码来找到 AWS 下的 chromium 可执行文件。

  1. 有没有比在我的下载路径下搜索 chrome 或 chrome.exe 更好的方法(我需要它在 windows 和 AWS 下运行以进行单元测试)?感觉如果 Puppeteer 提供了这对选项,那么一定有更好的方法来使用它们?
  2. 有没有比我尝试的更好的方法在 lambda 函数中使用 Puppeteer?

这是当前正在运行的 Windows 代码,其中 chrome 路径是硬编码的:

0 投票
1 回答
1567 浏览

websocket - 如何使用 Puppeteer 向 WebSocket 发送数据

我使用 puppeteer-sharp 转储通过 websockets 按页面接收和发送的数据。在 C# 中转储数据的代码:

有没有办法使用 puppeteer 或直接使用 Chrome 开发协议消息将数据发送到 websocket?

编辑: 或者是否有可能以某种方式获得 WebSocket 实例(或句柄)以在 JavaScript 代码中使用它来使用 EvaluateFunctionAsync 发送数据?

0 投票
1 回答
433 浏览

c# - Web API 控制器返回 Task 并不总是等待任务完成(puppeteer-sharp)

我有 Web API 控制器,它返回最初在外部库服务中创建的任务。我在从服务到控制器的所有链中返回任务,但问题是当我对该控制器进行 HTTP 调用时,当我第一次启动 API 时(第一次总是需要更长的时间)它返回完美的预期结果,当我第二次发出请求时等等..它返回一些部分结果。

当我调试它时,它总是返回预期的正确结果。显然现在有一些东西正在等待..

这是代码:

和服务:

如您所见,使用外部库的服务中有很多等待。我尝试在使用 await 的任何地方使用 ConfigureAwait(false) ,但这也无济于事。

0 投票
1 回答
1147 浏览

c# - 在 PuppeteerSharp 中初始化 BrowserFetcher 时引发 403 禁止错误

我试图在我的项目中使用 PuppeteerSharp 无头浏览器,它甚至没有初始化。

当它达到await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);这个异常时:

远程服务器返回错误:(403) Forbidden

0 投票
0 回答
333 浏览

c# - 无法下载页面以单击使用 Puppeteer for C# 的按钮

我正在运行docs中的以下代码。

当我单步执行代码时,在执行第一行后,控制台程序退出。没有错误,什么都没有 - 只是完成了执行。我真的不明白为什么会这样。

我正在尝试使用无头浏览器来访问页面并模拟单击按钮。第一步是获取页面,因为我正在尝试使用 google.com,但它似乎没有执行。

我已经用谷歌搜索了其他示例,但所有关于 C# 的内容都通过我链接到的示例引导到他们的网页。

我应该怎么做才能使我的点击可以访问该页面?

0 投票
1 回答
194 浏览

puppeteer - reloadWithDebugInfo 后如何获取 Angularjs 范围变量?

我有一个 angularjs 网页,想要获取指定元素的范围。但是执行reloadWithDebugInfo函数后,结果为null;

这些语句在 chrome 开发工具中运行良好。我期望范围的 json 内容,但那是空的;

更新:对不起,我在 Scope() 之后忘记了一些东西。我想要一个范围内的变量,而不是范围本身:

0 投票
1 回答
2621 浏览

c# - Puppeteer C#:连接到正在运行的 Chrome 实例

我目前正在运行 PuppeteerSharp v1.19.0 来启动浏览器并抓取网页。需要能够连接到现有的 chrome 实例并自动执行任务。我怎样才能实现这个 PuppeteerSharp?通过以下方法,我可以使用 PuppeteersSharp 启动 Chrome 而不是 Chromium,但我还没有找到如何连接到现有的 Chrome 实例。感谢所有帮助。

0 投票
2 回答
1108 浏览

c# - Puppeteer-Sharp 库没有工作,也没有在 Web 服务(wcf)项目中创建页面

我有一些 C# Web 服务(WCF)的代码并使用 puppeteer-sharp 库。首先,应创建页面,相关方法位于名为 SayfaOlustur() 的下方。但是我遇到了 System.IO.FileLoadException 异常行 LaunchOptions。

这段代码在我的本地机器和 TestProject 上工作(在 TestClass 中使用了 TestMethods),但是在发布整个代码页后没有创建并抛出 System.IO.FileLoadException 和 System.Value 异常。

System.Value.dll 包含在项目参考和 bin 文件夹中。

预期结果是使用 Chronumium 创建一个页面

异常详情

System.IO.FileLoadException:'无法加载文件或程序集“System.ValueTuple,Version=0.0.0.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”或其依赖项之一。

0 投票
2 回答
1868 浏览

c# - 傀儡师尖锐的奇怪行为

我试图调用Browser.NewPageAsync()另一个静态方法,但是当我调用它时,调用它的方法就退出了。

例如:如果我调用Browser.NewPageAsync()MainAsync()thenBrowser.NewPageAsync()将按预期调用。