VB.Net Webview2 Как я могу получить исходный код html?

Я успешно отображаю веб-сайт на WebView2 в своем проекте VB.net (Visual Studio 2017), но не могу получить исходный код html. Подскажите, пожалуйста, как получить html-код.

Мой код:

Private Sub testbtn_Click(sender As Object, e As EventArgs) Handles testbtn.Click
        WebView2.CoreWebView2.Navigate("https://www.microsoft.com/")
End Sub

Private Sub WebView2_NavigationCompleted(sender As Object, e As CoreWebView2NavigationCompletedEventArgs) Handles WebView2.NavigationCompleted
        Dim html As String = ?????
End Sub

Спасибо за ваш совет заранее.


person Tom    schedule 17.06.2020    source источник
comment
Я никогда не использовал элемент управления WebView2, и, похоже, об этом мало информации, но я подозреваю, что он начинается с здесь. Я думаю, что причина того, что это плохо документировано, заключается в том, что это часть Chromium.   -  person jmcilhinney    schedule 17.06.2020
comment
Отвечает ли это на ваш вопрос? Как получить исходный код страницы из WebView?   -  person J. Scott Elblein    schedule 17.06.2020
comment
Кроме того, stackoverflow. ком/вопросы/29654149/   -  person J. Scott Elblein    schedule 17.06.2020
comment
Огромное спасибо. Я прочитал документ, но до сих пор не могу найти ответ. Я также попробовал ссылку stackoverflow.com/questions/29654149/ но, к сожалению, Await myWebView.InvokeScriptAsync помечен как ошибка и не работает.   -  person Tom    schedule 18.06.2020


Ответы (2)


Я только сегодня начал возиться с WebView2 и просто искал то же самое. Мне удалось собрать это решение:

Dim html As String
html = Await WebView2.ExecuteScriptAsync("document.documentElement.outerHTML;")

' The Html comes back with unicode character codes, other escaped characters, and
' wrapped in double quotes, so I'm using this code to clean it up for what I'm doing.
html = Regex.Unescape(html)
html = html.Remove(0, 1)
html = html.Remove(html.Length - 1, 1)

Преобразовал мой код с C# на VB на лету, так что, надеюсь, не пропустил ни одной синтаксической ошибки.

person Xaviorq8    schedule 19.06.2020
comment
Фантастика. Огромное спасибо. Я могу выполнить получение исходного кода html из WebView2, как показано в следующем коде. Я очень ценю это. Private Sub testbtn_Click() Обрабатывает testbtn.Click wv.CoreWebView2.Navigate(microsoft.com/) End Sub Private Async Sub wv_NavigationCompleted() Обрабатывает wv.NavigationCompleted Dim html As String = String.Empty html = Await wv.ExecuteScriptAsync(document.documentElement.outerHTML;) html = Regex.Unescape(html) html = html.Remove(0, 1) html = html.Remove(html.Length - 1, 1) End Sub - person Tom; 19.06.2020

Добавляя к ответу @Xaviorq8, вы можете использовать Span, чтобы избавиться от создания новых строк с помощью Remove:

html = Regex.Unescape(html)
html = html.AsSpan()[1..^1].ToString();
person JohnyL    schedule 01.12.2020