Цель
- Я пытаюсь получить URL-адрес удаленной отладки для указанного объекта c ChromiumWebBrowser после его инициализации
new ChromiumWebBrowser(...)
Информация о приложении
- Мое приложение создает несколько
ChromiumWebBrowser
worker экземпляров во время выполнения, количество экземпляров зависит от рабочей нагрузки. Все они переходят по некоторым URL-адресам и выполняют задачи (нажимают на кнопки, заполняют входы, собирают значения) на сайтах. Если worker находит неожиданный результат после своих действий (не удалось найти элемент div с заданным идентификатором), он отправляет уведомление пользователю и раздает его URL-адрес для удаленной отладки, который разрешает пользователь , чтобы взять под контроль работника и расследовать, что пошло не так во время процесса.
Проблема
- Я не знаю, как получить удаленный URL-адрес отладки для специфицированного c
ChromiumWebBrowser
объекта - например, было бы неплохо, если бы в следующем блоке кода можно было легко создать такую переменную URL, но класс
ChromiumWebBrowser
не имеет такого свойства (RemoteDebuggingUrl). ChromiumWebBrowser worker1 = новый ChromiumWebBrowser (...);
string URL = worker1.RemoteDebuggingUrl;
усилия
Я решил покопаться в исходном коде CefSharp , чтобы узнать, как удаленный сервер отладки создает ссылки на основе ChromiumWebBrowser
, например, я предположил, что, возможно, он обращается к ChromiumWebBrowser
идентификатору объекта как свойство, потому что ссылки браузеров на главной странице удаленной отладки (доступ через http://localhost: 8088 ) похожи на следующий URL;
http://localhost: 8088 / devtools / inspector. html? Ws = localhost: 8088 / devtools / page / FA54735587998EFD141A2300AE57F70 C
" FA54735587998EFD141A2300AE57F70 C "часть - это идентификатор удаленной ссылки отладки, как показано в 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 , который является частью пакета Nuget для cef-sdk.75.1.14 . Я попытался найти реализацию этого символа, потому что я думал, что это точка входа удаленного сервера отладки, потому что он принимает параметр CefSettings
, который включает RemoteDebuggingPort
, который в моем случае был 8088 .