Как получить URL удаленной отладки указанного экземпляра c ChromiumWebBrowser в CefSharp? - PullRequest
0 голосов
/ 11 января 2020

Цель

  • Я пытаюсь получить 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 .

...