WebView2 応用テクニック

Chrome DevTools Protocolを使用する

ChromeブラウザにはCDP(Chrome DevTools Protocol)がありますが、
WebView2アプリケーションでもCDP APIを簡単に使用することができます。

CDPを使えば、計測、検査、デバッグ、プロファイリングなど、
通常のWebView2では扱えないような機能を使うことができます。

CallDevToolsProtocolMethodAsyncメソッドに、コマンドとパラメータを指定します。
パラメータと戻り値はJson文字列です。

コマンドやパラメータの詳しい値についてはChrome DevTools Protocolを参照してください。

						Private Async Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

							'DOMの情報を取得
							Dim resultJson = Await webView2.CoreWebView2.CallDevToolsProtocolMethodAsync("DOM.getDocument", "{}")
					
							'Webページのスクリーンショットを保存する
							Dim param = "{ ""format"" : ""jpeg""}"
							Dim resultJson2 = Await webView2.CoreWebView2.CallDevToolsProtocolMethodAsync("Page.captureScreenshot", param)
							Dim data = JsonSerializer.Deserialize(Of Dictionary(Of String, String))(resultJson2) 'NuGetからSystem.Text.Jsonをインストール
							Dim newBytes = Convert.FromBase64String(data("data")) 'Base64文字で取得されているので、バイナリに変換
							System.IO.File.WriteAllBytes("c:\soft\sample.jpeg", newBytes)
					
						End Sub
					
						private async void button1_Click(object sender, EventArgs e)
						{
							//DOMの情報を取得
							string resultJson = await webView2.CoreWebView2.CallDevToolsProtocolMethodAsync("DOM.getDocument", "{}");
				
							//Webページのスクリーンショットを保存する
							string param = @"{ ""format"" : ""jpeg""}";
							string resultJson2 = await webView2.CoreWebView2.CallDevToolsProtocolMethodAsync("Page.captureScreenshot", param);
							var data = JsonSerializer.Deserialize<Dictionary<string,string>>(resultJson2); //NuGetからSystem.Text.Jsonをインストール
							byte[] newBytes = Convert.FromBase64String(data["data"]); //Base64文字で取得されているので、バイナリに変換
							System.IO.File.WriteAllBytes(@"c:\soft\sample.jpeg", newBytes);
						}
					

参考

CoreWebView2.CallDevToolsProtocolMethodAsync