Использование протокола Chrome DevTools (CDP) в приложениях WebView2

Протокол Chrome DevTools предоставляет API-интерфейсы для инструментирования, проверки, отладки и профилирования Chromium браузеров. Протокол Chrome DevTools является основой для Microsoft Edge DevTools. Используйте протокол Chrome DevTools для функций, которые не реализованы на платформе WebView2.

Чтобы использовать API протокола Chrome DevTools в приложении WebView2, выполните одно из следующих действий:

Использование DevToolsProtocolHelper

DevToolsProtocolHelper Содержит DevToolsProtocolExtension объект .

Microsoft.Web.WebView2.DevToolsProtocolExtension — это пакет NuGet, созданный командой WebView2, который обеспечивает простой доступ к функциям протокола Chrome DevTools. В следующих примерах описывается использование функции геолокации в протоколе Chrome DevTools в элементе управления WebView2. Чтобы использовать другие функции протокола Chrome DevTools, можно следовать аналогичному шаблону.

Шаг 1. Создание веб-страницы для поиска географического расположения

Чтобы создать объект HTML file для поиска географического расположения, выполните следующие действия.

  1. Откройте Visual Studio Code (или IDE по своему выбору).

  2. Создайте новый .html файл.

  3. Вставьте следующий код в новый .html файл:

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <title>Geolocation Finder</title>
    </head>
    <body>
       <button id="display">Display Location</button>
       <div id="message"></div>
    </body>
    
    <script>
       const btn = document.getElementById('display');
       // Find the user location.
       btn.addEventListener('click', function () {
          navigator.geolocation.getCurrentPosition(onSuccess, onError);
       });
    
       // Update message to display the latitude and longitude coordinates.
       function onSuccess(position) {
          const {latitude, longitude} = position.coords;
          message.textContent = `Your location: (${latitude},${longitude})`;
       }
    
       function onError() {
          message.textContent = `Operation Failed`;
       }
    </script>
    </html>
    
  4. Сохраните .html файл с именем geolocation.html.

  5. Откройте Microsoft Edge.

  6. Откройте .geolocation.html

  7. Чтобы отобразить координаты широты и долготы, нажмите кнопку Показать расположение . Чтобы проверить и сравнить географическое положение, скопируйте и вставьте координаты в https://www.bing.com/maps.

    Отображение координат географического расположения пользователя в Microsoft Edge

Шаг 2. Отображение geolocation.html в WebView2

  1. Чтобы создать приложение WebView2, используйте руководство по началу работы или примеры WebView2:

  2. Задайте для начальной навигации элемента управления WebView2 значение geolocation.html:

    webView.CoreWebView2.Navigate(@"C:\{path\to\file}\geolocation.html");
    
  3. Убедитесь, geolocation.html что файл отображается в приложении элемента управления WebView2:

    Файл geolocation.html, отображаемый в приложении элемента управления WebView2

Шаг 3. Установка пакета NuGet DevToolsProtocolHelper

Используйте NuGet для скачивания Microsoft.Web.WebView2.DevToolsProtocolExtension.

Чтобы установить пакет, выполните следующие действия:

  1. Выберите Управление проектами>Управление пакетами> NuGetОбзор.

  2. Введите Microsoft.Web.WebView2.DevToolsProtocolExtension и выберите Microsoft.Web.WebView2.DevToolsProtocolExtension>Install.

  3. Убедитесь, что Microsoft.Web.WebView2.DevToolsProtocolExtension отображается в диспетчере пакетов NuGet Visual Studio:

    Убедитесь, что Microsoft.Web.WebView2.DevToolsProtocolExtension отображается в диспетчере пакетов NuGet Visual Studio

Шаг 4. Использование вспомогательного средства по протоколу DevTools

  1. Добавьте пространство имен в DevToolsProtocolExtension проект:

    using Microsoft.Web.WebView2.Core;
    using Microsoft.Web.WebView2.Core.DevToolsProtocolExtension;
    
  2. Создайте экземпляр объекта и перейдите DevToolsProtocolHelper по адресу geolocation.html:

    async void InitializeAsync()
    {
       await webView.EnsureCoreWebView2Async(null);
       DevToolsProtocolHelper helper = webView.CoreWebView2.GetDevToolsProtocolHelper();
    
       webView.CoreWebView2.Navigate(@"C:\{path\to\file}\geolocation.html");
    }
    
  3. Выполните метод setGeoLocationOverrideAsync :

    async void InitializeAsync()
    {
       await webView.EnsureCoreWebView2Async(null);
       DevToolsProtocolHelper helper = webview.CoreWebView2.GetDevToolsProtocolHelper();
    
       // Latitude and longitude for Paris, France.
       double latitude = 48.857024082572565;
       double longitude = 2.3161581601457386;
       double accuracy = 1;
       await helper.Emulation.setGeolocationOverrideAsync(latitude, longitude, accuracy);
    }
    

    Дополнительные сведения см. в разделе setGeolocationOverride.

  4. Запустите приложение.

  5. Чтобы отобразить координаты Парижа, Франция, нажмите кнопку Показать расположение :

    Отображение файла .html в элементе управления WebView2 с координатами Парижа

Отправить запрос на ошибку или функцию для протокола Chrome DevTools

Чтобы запросить функцию платформы WebView2, введите новую проблему в репозитории WebView2Feedback.

Чтобы сообщить об ошибке о протоколе Chrome DevTools, отправьте отчет об ошибке в базу данных об ошибках Chromium.

Протокол Chrome DevTools поддерживается проектом открытый код Chromium, а не командой Microsoft Edge WebView2.

См. также