質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

3833閲覧

WebView2アプリを自動化したときに出るダイアログを消す方法

noita

総合スコア2

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

1グッド

0クリップ

投稿2022/09/25 08:00

前提

Microsoft Edge WebDriver を使用して WebView2 アプリを自動化してテストする
https://learn.microsoft.com/ja-jp/microsoft-edge/webview2/how-to/webdriver
を参考に下のようにコーディングしてWebView2アプリを自動化してみました。

発生している問題・エラーメッセージ

予定どおり、bingのページが開き、検索語に「テスト」を入力することができたのですが次のように黒いダイアログが出てしまいます。
イメージ説明
このダイアログを出さなくする方法はないでしょうか。

ダイアログの内容です。
DevTools listening on ws://127.0.0.1:54343/devtools/browser/5377afbc-5df2-49b9-a2a3-66e7c1c4586a
[20300:16288:0925/154709.678:ERROR:edge_auth_errors.cc(415)] EDGE_IDENTITY: Get Default OS Account failed: Error: Primary Error: kImplicitSignInFailure, Secondary Error: kAccountProviderFetchError, Platform error: 0, Error string:

[20300:16288:0925/154714.777:ERROR:device_event_log_impl.cc(214)] [15:47:14.777] USB: usb_device_handle_win.cc:1048 Failed to read descriptor from node connection: システムに接続されたデバイスが機能していません。 (0x1F)

該当のソースコード

開発環境はVisual Studio 2022でC#です。

var eo = new EdgeOptions(); eo.UseWebView = true; eo.BinaryLocation = Application.ExecutablePath; var service = EdgeDriverService.CreateDefaultService(); service.HideCommandPromptWindow = true; var ex = new EdgeDriver(service, eo); ex.Url = @"https://bing.com"; var element = ex.FindElement(By.Id("sb_form_q")); element.SendKeys("テスト");

試したこと

次のようにしてみましたが何れもダメでした。
webView21.CoreWebView2.Settings.AreDefaultScriptDialogsEnabled = false;
webView21.CoreWebView2.Settings.IsBuiltInErrorPageEnabled = false;
eo.LeaveBrowserRunning = false;

TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2022/09/25 08:34

「ヘッドレスモード」を検索してみてください。
noita

2022/09/25 09:17

回答ありがとうございます。 eo.AddArgument("--headless"); を入れてみても変わりませんでした。
guest

回答1

0

ベストアンサー

テスト対象のアプリに手を入れられるなら、↓の方法でやったところなぜかでなくなりました(HideCommandPromptWindowすら不要)
手順 4b: 実行中の WebView2 アプリMicrosoft Edge WebDriver をアタッチする

C++はわからないんで、WebView2WpfBrowserをターゲットにしました。

cs

1namespace WebView2WpfBrowser 2{ 3// 省略 4 public partial class MainWindow : Window 5 { 6// 省略 7 public MainWindow() 8 { 9// 省略 10 InitializeAsync(); 11 } 12 13 async void InitializeAsync() 14 { 15 var env = await CoreWebView2Environment.CreateAsync(options: new CoreWebView2EnvironmentOptions("--remote-debugging-port=9222")); 16 await webView.EnsureCoreWebView2Async(env); 17 } 18// 省略

diff

1- <wv2:WebView2 2- x:Name="webView" 3- CreationProperties="{StaticResource EvergreenWebView2CreationProperties}" 4- Source="https://www.bing.com/" 5- /> 6+ <wv2:WebView2 x:Name="webView" CreationProperties="{StaticResource EvergreenWebView2CreationProperties}" />

cs

1using System; 2using OpenQA.Selenium; 3using OpenQA.Selenium.Edge; 4 5 6namespace WebDriverSample 7{ 8 class Program 9 { 10 static void Main() 11 { 12 var eo = new EdgeOptions(); 13 eo.UseWebView = true; 14 eo.DebuggerAddress = "localhost:9222"; 15 16 var e = new EdgeDriver(eo); 17 e.Url = @"https://bing.com"; 18 19 var element = e.FindElement(By.Id("sb_form_q")); 20 element.SendKeys("テスト"); 21 22 Console.ReadKey(); 23 } 24 } 25}

注)対象アプリを事前に起動しておく必要があります。


なんかバグくさいですが、どこにフィードバックすればいいんでしょうね?^^;

投稿2022/09/25 11:22

TN8001

総合スコア9304

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

noita

2022/09/25 12:54

できました!!ありがとうございました。 MSのサイトのアプリにアタッチする方法ですね。 先の私のアプリでは、自分自身のインスタンス上でWebView2を表示させていましたが、今回は、WebView2で表示する用途のアプリとそのアプリを操作するアプリを別々に作成するという方法かと思います。 まず、WebView2で表示用のアプリを作成し、そのアプリを起動させたまま、別のアプリに 「 eo.DebuggerAddress = "localhost:9222";」等を記述して操作するようにしました。当方、WindowsFormで作成しておりますので、HideCommandPromptWindowを入れなければなりませんでしたが、余計なダイアログは出ませんでした。 ブラウザ操作はwebBrowserコンポーネントを使うと簡単でしたが、WebView2ではなかなか大変だなと思っています。 本当に大変助かりました。重ねてお礼申し上げます。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問