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

javascript - 使用 CefSharp.Offscreen 检索需要 Javascript 呈现的网页

我有一个希望是简单的任务,但它需要一个精通 CefSharp 的人来解决它。

我有一个要从中检索 HTML 的 url。问题是这个特定的 url 实际上并没有在 GET 上分发页面。相反,它将一堆 Javascript 推送到浏览器,然后浏览器执行并生成实际呈现的页面。这意味着涉及HttpWebRequest并且HttpWebResponse不会起作用的通常方法。

我查看了许多不同的“无头”选项,出于多种原因,我认为最能满足我需求的选项是 CefSharp.Offscreen。但我不知道这件事是如何运作的。我看到有几个可以订阅的事件和一些配置选项,但我不需要嵌入式浏览器之类的东西。

我真正需要的是一种方法来做这样的事情(伪代码):

我订阅事件没有问题,如果这是等待 Javascript 执行并生成渲染页面所需要的。

0 投票
1 回答
1273 浏览

c# - 异步控制台程序在使用 CefSharp 完成任务时挂起

为了创建完美的string result = browser.Browse(url)方法,我创建了一个简单的类库来演示 CefSharp。代码是:

这是测试工具,在引用 CefSharpHeadlessBrowser 项目的单独控制台项目中:

这确实有效;它正确地获取 HTML 页面源并将其显示在控制台窗口中,就像它应该的那样。但问题是:控制台程序在显示页面源后挂起。 它应该立即退出。这一定意味着我在异步操作上做错了什么并导致死锁。

可能是什么问题?

0 投票
0 回答
417 浏览

c# - CefSharp.offscreen 正确呈现,但 DOM 访问不起作用

我正在使用 Cefsharp.Offscreen 项目进行一些自动化。我想执行一些 DOM 操作来选择元素并在其上触发事件。

  • 每个 javascript 调用都不会返回我想要选择的元素。
  • 如果我截取页面的屏幕截图,它看起来是正确的
  • 如果我在 Chrome 控制台中执行相同的 javascript,它可以工作

我想我错过了什么地方。

非常感谢

0 投票
2 回答
7264 浏览

c# - C# 中使用 Cefsharp 的整页截图

我已经下载了 Minimalexample.Offscreen 的示例。这是我用于屏幕截图的代码,但我没有得到完整的页面。图像被裁剪(仅拍摄可见页面截图)。

如何使用 CefSharp offscreen 或 Cefsharp winforms 获得完整的长页面截图?

0 投票
1 回答
357 浏览

c# - c# CefSharp 浏览器无法访问大多数站点

嗨,基本上就是标题所说的。

我正在尝试打开 twitch 并在我的应用程序中播放视频。

设置是

xml代码

抽搐基本上只是不加载,我已经把它放在那里一个多小时,它从来没有出现过,使用谷歌而不是在大约 10 秒内加载页面。我浏览了他们的 wiki、Youtube 和 Stackoverflow,但我找不到加快加载速度的方法。

先感谢您。

0 投票
0 回答
1051 浏览

c# - 具有代理身份验证的 CefSharp

我想将 CefSharp 与代理一起使用。

我在 C# 中有以下代码:-

但我也想提供代理用户名和密码。如何在 CefSharp 中进行代理身份验证?

0 投票
1 回答
612 浏览

c# - 在 asp.net 项目中使用 cefsharp 时出现异常

我试图在 asp.net 项目的代码后面使用 CEF 问题是它一直给出这个错误

无法加载文件或程序集“CefSharp.BrowserSubprocess.Core.DLL”或其依赖项之一。指定的模块无法找到。

甚至我已将所有 CEF 文件复制到项目的 /bin 文件夹。这个错误发生在从 Nuget 包安装 Cef 之后,我还尝试过 CEFSharp.Offscreen 和 CEFSharp.WinForms(它适用于 Windows 应用程序,但不适用于 Web,但我已经尝试过)

0 投票
0 回答
763 浏览

cefsharp - CefSharp ScreenshotAsync 并不总是返回正确的位图

我无法使用 CefSharp 有界对象捕获动画的每一帧。看起来返回的位图Browser.ScreenshotAsync并不总是正确同步。这是我的 javascript 渲染函数,它以恒定的速率水平移动 WebGL 对象:

这是我的 CEF 有界对象:

这确实会保存序列中的每个文件而不会跳过:0000.png、0001.png、0002.png 等。但是,有些图像文件是重复的,有些图像文件会跳帧。我想我遇到了一个不同步的线程问题,但我看不出它可能在哪里。实际上,如果我在最后一行设置断点Browser.EvaluateScriptAsync(callback);并单步执行动画,则所有文件都按顺序正确生成。

0 投票
2 回答
2333 浏览

c# - CefSharp 屏幕外 - 等待页面渲染

我有一个问题如下。我使用 CefSharp offscreen 进行网页自动化如下(我只打开一个相同的页面): 1. 打开页面并等待它呈现*。2. 使用 EvaluateScriptAsync 我将值放入输入表单,然后使用相同的方法单击网页上的按钮。3.然后这个网页上有一些JS检查结果并显示消息。4. 当消息显示时,我会截屏。**

但是,我有两个问题: * 我的解决方案必须是 Internet 速度证明。当我使用 BrowserLoadingStateChanged 事件和 IsLoading 方法时,即使触发的事件没有完全加载网页 - 当我启动 EavluateScriptAsync 方法时,它会返回错误,因为页面没有完全加载。当然,我可以说 ThreadSleep 之类的东西,但它并不总是有效 - 它在很大程度上取决于您的互联网速度。

** 当我尝试截屏时,它并不总是包含 JS 显示的结果消息 - 有时会出现加载圆圈而不是消息。在这里,我可以再次使用 THreadSleep,但它并不总是有效。

你有什么想法?提前致谢。

0 投票
1 回答
1514 浏览

c# - ChromiumWebBrowser Offscreen 不适用于 MsTest/NUnit

我正在尝试在 OffScreen 模式下使用 MsTest 单元测试框架中的 ChromiumWebBrowser 来提供一些测试......但是 Chromium 构造函数一直崩溃,我对此无能为力。

我已经在 github 上的类似帖子中留下了评论:

问题 #1

发行人#2

我也试图在 gitter 频道上寻求帮助。我创建了 MsTest 项目并添加了使用 Chromium 的简单方法:

我的解决方案结构:

我的解决方案结构

我的 testsettings 文件(将所有依赖项部署到测试引擎“TestResults...\Out 文件夹”的工作目录中):

我从 Visual Studio 测试资源管理器运行测试并得到这样的错误: 测试引擎在测试运行时崩溃

请帮助,需要任何支持或想法...