问题标签 [cefsharp.offscreen]

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 回答
3118 浏览

c# - CefSharp winfoms 页面加载并等待

我正在我的应用程序中使用Cefsharp Offscreen。文档中提供的加载页面的代码是:

但我想要这样的东西

我找不到任何解决方案。

0 投票
0 回答
591 浏览

c# - 如何在 CefSharp 中获取特定 ChromiumWebBrowser 实例的远程调试 URL?

目标

  • 我正在尝试使用初始化后获取特定 ChromiumWebBrowser 对象的远程调试 URLnew ChromiumWebBrowser(...)

申请信息

  • 我的应用程序在运行时创建了多个ChromiumWebBrowser 工作实例,实例的数量因工作负载而异。它们都导航到一些 URL 并在站点上执行任务(单击按钮、填充输入、收集值)。如果工作人员在执行操作后发现意外结果(找不到具有给定 id 的 div 元素),它会向用户发送通知并分发它的远程调试 URL,该 URL 允许用户控制工作人员并调查问题所在过程中。

问题

  • 我不知道如何获取特定ChromiumWebBrowser对象的远程调试 URL
  • ChromiumWebBrowser例如,如果 URL 变量可以在下面的代码块中简单地实例化,但类没有这样的属性(RemoteDebuggingUrl) ,那就太好了。

    ChromiumWebBrowser worker1 = new ChromiumWebBrowser(...);

    字符串 URL = worker1.RemoteDebuggingUrl;

努力

我决定深入研究CefSharp的源代码,以了解远程调试服务器如何根据每个ChromiumWebBrowser基础创建链接,例如,我假设它可能正在访问ChromiumWebBrowser对象 ID 之类的属性,因为远程调试主页中的浏览器链接(通过http 访问: //localhost:8088 ) 就像下面的 url ;

http://localhost:8088/devtools/inspector.html?ws=localhost:8088/devtools/page/FA54735587998EFD141A2300AE57F70C

FA54735587998EFD141A2300AE57F70C ”部分是远程调试链接的ID,如http://localhost:8088/json

最后我无法使用 Visual Studio 2019 导航到以下符号的实现

旨在了解远程调试服务器的工作原理。我在“ cef_app.h ”头文件中找到了这个符号,它是cef-sdk.75.1.14 Nuget 包的一部分。我试图找到这个符号的实现,因为我认为它是远程调试服务器的入口点,因为它需要CefSettings包含在我的例子RemoteDebuggingPort中是8088的参数。

0 投票
0 回答
683 浏览

winforms - 页面异步加载后 CefSharp 'CanExecuteJavascriptInMainFrame' false

我在使用LoadPageAsync Method时发现错误。所有要重现的代码如下。

1)等待new ChromiumWebBrowser("https://www.google.com/")页面加载。

2) 然后按button1。结果:canExecuteJs将是falsecanExecuteJs1将是true

另一方面,如果不等待new ChromiumWebBrowser("https://www.google.com/")页面加载,并且在屏幕上出现按钮的那一刻单击它,则两个变量都是true.

0 投票
0 回答
253 浏览

c# - 运行某些脚本时 Cefsharp 崩溃。C#

我使用 cefsharp 在循环内的浏览器环境(控制台)中执行一些 JavaScript 命令。

例如,当我想运行类似Goog_AdSense_(与“Google AdSense”应用程序相关的)命令时,cefsharp 崩溃并且循环的其余部分将不会执行。

我知道 cefsharp 使用IRequestHandler接口调用OnRenderProcessTerminated方法来显示错误,但想知道如何从这里开始!

如何执行和运行循环的其余部分?

谷歌浏览器控制台中的一个示例:

google chrome 控制台中的示例

0 投票
0 回答
307 浏览

winforms - CefSharp Offscreen 示例作为 WinForm 应用程序调用的动态库

我编写了一个共享库,它使用 CefSharp.Offscreen 来完成 html 检索工作。当控制台应用程序调用它时它工作正常。但是当一个 WinForm 应用连接它时,在执行 tcs.TrySetResult(true) 之后,它并没有像在控制台应用中那样跳转到 await browser.GetSourceAsync()。

在 WinForm App 中,如果没有创建任何 UI 元素并且不在 UI 构造函数中,它可能会成功,但如果我在调用共享库之前创建 UI 元素,它总是会失败。

以另一种方式,我强制调用“var source = await browser.GetSourceAsync();” 获取当前的 html 源代码,但在 WinForm 连接中仍然没有响应。

0 投票
1 回答
985 浏览

c# - 是否有无头 Chrome 的替代品来使用扩展程序?

我正在尝试制作一个需要同时运行多个 Chrome 窗口的硒自动化。我尝试在无头模式下使用 Chrome,但由于它不支持安装扩展,我需要一个替代方案。所以我的问题是:是否有另一种方法可以在没有启用扩展的实际窗口的情况下运行 Chrome?

0 投票
0 回答
216 浏览

asp.net-web-api2 - 在 ASP.Net Web 应用程序中使用 CefSharp.OffScreen 时出错 - 无法加载文件或程序集 CefSharp.BrowserSubprocess.Core.DLL

是否可以在 ASP.Net Web 应用程序中运行 CefSharp.OffScreen?当我尝试时,此错误立即发生,并且在我可以放置断点的任何代码之前。要出现此错误,只需创建一个新项目,添加 CefSharp.Offscreen 包,然后按 F5。我猜我需要添加一些引用或者它可能需要一个 STA 线程?我意识到这可能不是这个库的典型用途,但我只是在试验。

0 投票
1 回答
184 浏览

c# - 在 CefSharp C# 中加载 html 页面后,是否有可能获得状态代码,即 (200,301,302)?

在 CefSharp C# 项目中加载 HTML 网站后,我遇到了无法获得响应状态代码的问题。在浏览器中加载新页面后,会调用一些方法,例如 OnLoadingStateChange。

主要问题是我不知道如何获取与加载页面关联的状态响应代码(200,301,302 等)。怎么做?

0 投票
1 回答
3910 浏览

c# - 无法部署 CefSharp - CefSharp.Core.Runtime.dll

我创建了一个新的控制台项目并使用 NuGet 添加CefSharp.CommonCefSharp.OffScreen.

我添加了以下代码:

然后我发布了项目并尝试运行它,我收到了这个错误:System.IO.FileLoadException: A procedure imported by 'CefSharp.Core.Runtime.dll' could not be loaded.

以下文件位于已发布的文件夹中

  • CefSharp_Test.exe
  • CefSharp_Test.exe.config.deploy
  • CefSharp_Test.exe.deploy
  • CefSharp_Test.exe.manifest
  • CefSharp.Core.dll.deploy
  • CefSharp.Core.Runtime.dll.deploy
  • CefSharp.dll.deploy
  • CefSharp.Offscreen.dll.deploy

我看到 CefSharp 最近推出了一项创建CefSharp.Core.Runtime.dll- https://github.com/cefsharp/CefSharp/issues/3319的更改,我认为这个问题在某种程度上与 CefSharp 确定是否Runtime.dll应该使用 x86 或 x64 相关,但我一直无法找到解决问题的方法。

该项目在 Visual Studio 中运行时不会出现问题。

编辑 -从 CefSharp 自述文件看来,libcef.dllicudtl.datCefSharp.BrowserSubprocess.exeCefSharp.BrowserSubprocess.Core.dll是必需的依赖项。我已将这些文件添加到项目中,设置为始终复制并重新发布。错误现在读取System.IO.FileNotFoundException: Could not load file or assembly 'CefSharp.Core.Runtime.dll' or one of its dependencies. The specified module could not be found.

编辑 -这似乎是一个已知问题,将在 CefSharp 的未来版本中修复。https://github.com/cefsharp/CeSharp/pull/3391

编辑 -我尝试使用 CefSharp v88.2.40-pre 运行它并收到相同的错误。

编辑 - CefSharp v88.2.40 已发布。我试图用它运行并收到相同的错误。

0 投票
0 回答
509 浏览

c# - 可以查看 CefSharp 离屏浏览器

我正在尝试使用带有 dotnet 核心的 CefSharp Offscreen 将浏览器合并到控制台应用程序中。

是否可以通过这种方式在 Chromium 浏览器中查看网页?

在下面的代码中(主要取自他们的 Offscreen github 示例),我试图显示一个简单的 HTML 页面(稍后它将是 React 或 Angular,但现在 HTML 很好)。

在他们的代码中,他们在 Chromium 中加载了一个网页并拍照,我希望能够查看它截取的 webpae。