问题标签 [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.
c# - 如何在 CefSharp 中获取特定 ChromiumWebBrowser 实例的远程调试 URL?
目标
- 我正在尝试使用初始化后获取特定 ChromiumWebBrowser 对象的远程调试 URL
new 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 ;
“ FA54735587998EFD141A2300AE57F70C ”部分是远程调试链接的ID,如http://localhost:8088/json
最后我无法使用 Visual Studio 2019 导航到以下符号的实现
旨在了解远程调试服务器的工作原理。我在“ cef_app.h ”头文件中找到了这个符号,它是cef-sdk.75.1.14 Nuget 包的一部分。我试图找到这个符号的实现,因为我认为它是远程调试服务器的入口点,因为它需要CefSettings
包含在我的例子RemoteDebuggingPort
中是8088的参数。
winforms - 页面异步加载后 CefSharp 'CanExecuteJavascriptInMainFrame' false
我在使用LoadPageAsync Method时发现错误。所有要重现的代码如下。
1)等待new ChromiumWebBrowser("https://www.google.com/")
页面加载。
2) 然后按button1
。结果:canExecuteJs
将是false
而canExecuteJs1
将是true
。
另一方面,如果不等待new ChromiumWebBrowser("https://www.google.com/")
页面加载,并且在屏幕上出现按钮的那一刻单击它,则两个变量都是true
.
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 连接中仍然没有响应。
c# - 是否有无头 Chrome 的替代品来使用扩展程序?
我正在尝试制作一个需要同时运行多个 Chrome 窗口的硒自动化。我尝试在无头模式下使用 Chrome,但由于它不支持安装扩展,我需要一个替代方案。所以我的问题是:是否有另一种方法可以在没有启用扩展的实际窗口的情况下运行 Chrome?
asp.net-web-api2 - 在 ASP.Net Web 应用程序中使用 CefSharp.OffScreen 时出错 - 无法加载文件或程序集 CefSharp.BrowserSubprocess.Core.DLL
是否可以在 ASP.Net Web 应用程序中运行 CefSharp.OffScreen?当我尝试时,此错误立即发生,并且在我可以放置断点的任何代码之前。要出现此错误,只需创建一个新项目,添加 CefSharp.Offscreen 包,然后按 F5。我猜我需要添加一些引用或者它可能需要一个 STA 线程?我意识到这可能不是这个库的典型用途,但我只是在试验。
c# - 在 CefSharp C# 中加载 html 页面后,是否有可能获得状态代码,即 (200,301,302)?
在 CefSharp C# 项目中加载 HTML 网站后,我遇到了无法获得响应状态代码的问题。在浏览器中加载新页面后,会调用一些方法,例如 OnLoadingStateChange。
主要问题是我不知道如何获取与加载页面关联的状态响应代码(200,301,302 等)。怎么做?
c# - 无法部署 CefSharp - CefSharp.Core.Runtime.dll
我创建了一个新的控制台项目并使用 NuGet 添加CefSharp.Common
和CefSharp.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.dll
、icudtl.dat
、CefSharp.BrowserSubprocess.exe
和CefSharp.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 已发布。我试图用它运行并收到相同的错误。
c# - 可以查看 CefSharp 离屏浏览器
我正在尝试使用带有 dotnet 核心的 CefSharp Offscreen 将浏览器合并到控制台应用程序中。
是否可以通过这种方式在 Chromium 浏览器中查看网页?
在下面的代码中(主要取自他们的 Offscreen github 示例),我试图显示一个简单的 HTML 页面(稍后它将是 React 或 Angular,但现在 HTML 很好)。
在他们的代码中,他们在 Chromium 中加载了一个网页并拍照,我希望能够查看它截取的 webpae。