目标
- 我正在尝试使用初始化后获取特定 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
[
{
"description": "",
"devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:8088/devtools/page/FA54735587998EFD141A2300AE57F70C",
"id": "FA54735587998EFD141A2300AE57F70C",
"title": "Sign In",
"type": "page",
"url": "https://af.sts.mapfre.net/adfs/ls/?SAMLRequest=hZJda8IwFIb%2FSsm9TVvFj9AKtk4Q3BDddrGbEeopBpqkyzl1279fWnFzF3NXgZPzJs9zkhSlrhuxaOlodvDWAlLwoWuDot%2FIWOuMsBIVCiM1oKBS7Bf3G5GEkWicJVvaml1FbickIjhS1rBgvczYa5zP8tE0XxXjPJrdjYer8SiaTIplnAxXwyguWPAMDn1%2FxnzchxBbWBskaciXong2iJNBMn6MExFNxTB5YcHSOygjqU8diRoUnMsqRMJQy6ZyEBogLg8V8ho5CwprELrzbpGX5yZRts75daB0U6tSEQtW1pXQDzBjlawROsytN1Un%2BK4sLuLdZa0Gtwd3UiU87TY%2FkJ7uQlhaHZLjGuraGt5YpB1g0zGwedrNWfSjcPM%2Fsym%2FbkvP7%2FzgvdbLrfXonx24lv9odxV1GFR9qyAnDSqv74U82HvhQJKXJNcC4%2FPzlb9%2F0%2FwL",
"webSocketDebuggerUrl": "ws://localhost:8088/devtools/page/FA54735587998EFD141A2300AE57F70C"
}
]
最后我无法使用 Visual Studio 2019 导航到以下符号的实现
bool CefInitialize(const CefMainArgs& args,
const CefSettings& settings,
CefRefPtr<CefApp> application,
void* windows_sandbox_info);
旨在了解远程调试服务器的工作原理。我在“ cef_app.h ”头文件中找到了这个符号,它是cef-sdk.75.1.14 Nuget 包的一部分。我试图找到这个符号的实现,因为我认为它是远程调试服务器的入口点,因为它需要CefSettings
包含在我的例子RemoteDebuggingPort
中是8088的参数。