ちょうど微妙な時期なのですが、WebView2
(いわゆる Chromium Edge)がそろそろ正式リリースされるはずです(まだプレビュー)
既にWebView
にはObsoleteAttribute
が付いており、あまり使わせたくないのかもしれません^^;
WebView
・WebView2
は互換性もなく非常に悩ましいです。
WebView2
を試す場合は下記の上で、Microsoft.Web.WebView2
を0.9.538-prerelease
にダウングレードしてください(理由は不明だがそうしないと手順通りにできない)
Microsoft Edge WebView 2 Windows フォームアプリ - Microsoft Edge Development | Microsoft Docs
使用例
cs
1using System;
2using System.Diagnostics;
3using System.Windows.Forms;
4using Microsoft.Toolkit.Forms.UI.Controls;
5using Microsoft.Toolkit.Win32.UI.Controls.Interop.WinRT;
6using Microsoft.Web.WebView2.Core;
7using Microsoft.Web.WebView2.WinForms;
8
9namespace Questions274706
10{
11 public partial class Form1 : Form
12 {
13 private readonly WebView webView; // Warning CS0618 Obsolete付けるのはまだ早い気がするが^^;
14 private readonly WebView2 webView2;
15
16 public Form1()
17 {
18 InitializeComponent();
19
20 var panel = new TableLayoutPanel
21 {
22 ColumnCount = 2,
23 RowCount = 1,
24 Dock = DockStyle.Fill,
25 };
26 panel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
27 panel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
28 Controls.Add(panel);
29
30 webView = new WebView
31 {
32 Source = new Uri("https://teratail.com/questions/274706"),
33 Dock = DockStyle.Fill,
34 };
35 webView.NavigationCompleted += WebView_NavigationCompleted;
36 panel.Controls.Add(webView, 0, 0);
37
38
39 webView2 = new WebView2
40 {
41 Source = new Uri("https://teratail.com/questions/274706"),
42 Dock = DockStyle.Fill,
43 };
44 webView2.NavigationCompleted += WebView2_NavigationCompleted;
45 panel.Controls.Add(webView2, 1, 0);
46 }
47
48 private void WebView_NavigationCompleted(object sender, WebViewControlNavigationCompletedEventArgs e)
49 {
50 // InvokeScriptAsyncもある
51 var result = webView.InvokeScript("eval", new string[] { "document.getElementById('l-mainContents').innerText" });
52 Debug.WriteLine(result);
53
54 var t = "定形郵便";
55 webView.InvokeScript("eval", new string[] { $"document.getElementById('boxSearch-query').setAttribute('value','{t}');" });
56 }
57
58 private async void WebView2_NavigationCompleted(object sender, CoreWebView2NavigationCompletedEventArgs e)
59 {
60 // ExecuteScriptはない
61 var result = await webView2.ExecuteScriptAsync("document.getElementById('l-mainContents').innerText");
62 Debug.WriteLine(result);
63
64 var t = "定形郵便";
65 await webView2.ExecuteScriptAsync($"document.getElementById('boxSearch-query').setAttribute('value','{t}');");
66 }
67 }
68}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/03 07:24