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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Microsoft Edge

Microsoft Edgeは、マイクロソフト社が開発する新しいWebブラウザです。Windows 10から標準搭載されており、Internet Explorerとは違うレンダリングエンジンが採用されています。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

C#

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

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

1回答

10784閲覧

C# WebDriverManagerで、今インストールされてるEdgeのバージョンに合わせてEdgeDriverをセットアップする

woria

総合スコア36

Microsoft Edge

Microsoft Edgeは、マイクロソフト社が開発する新しいWebブラウザです。Windows 10から標準搭載されており、Internet Explorerとは違うレンダリングエンジンが採用されています。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

C#

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

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

1グッド

0クリップ

投稿2021/08/30 02:31

前提・実現したいこと

C#にて、Microsoft Edgeを使ったスクレイピングクラスを作っています。
その際、利用者のPCにインストールされたEdgeに合わせてWebDriverManagerからEdgeDriverをセットアップしたいです。

調べたこと

C#におけるChromeDriverの自動アップデートのやり方のベストアンサーで、
「今インストールされてるChromeに合わせてバージョンをセットアップ」する方法が紹介されているため、そちらを参考にしたいと思います。

該当のソースコード

C#

1using System; 2using System.Diagnostics; 3using System.Net.Http; 4using System.Threading.Tasks; 5using Microsoft.Win32; 6using OpenQA.Selenium.Chrome; 7using OpenQA.Selenium.Edge; 8using WebDriverManager; 9using WebDriverManager.DriverConfigs.Impl; 10 11namespace Questions227899 12{ 13 class Program 14 { 15 static async Task Main() 16 { 17 // Console.WriteLine("ChromeDriverを取得中"); 18 // var version = await GetChromeDriverVersionAsync(); 19 // new DriverManager().SetUpDriver(new ChromeConfig(), version); 20 // Console.WriteLine("ChromeDriverを取得終了"); 21 22 // var chrome = new ChromeDriver(); 23 24 Console.WriteLine("EdgeDriverを取得中"); 25 var version = await GetEdgeDriverVersionAsync(); 26 new DriverManager().SetUpDriver(new EdgeConfig(), version); 27 Console.WriteLine("EdgeDriverを取得終了"); 28 29 var edge = new EdgeDriver(); 30 edge.Navigate().GoToUrl("https://teratail.com/"); 31 32 33 // Task<string> GetChromeDriverVersionAsync() 34 Task<string> GetEdgeDriverVersionAsync() 35 { 36 var path = Registry.GetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe", "", null); //ここを変更する? 37 if(path == null) 38 path = Registry.GetValue(@"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe", "", null); //ここを変更する? 39 // インストールされているChromeのバージョン 40 var v = FileVersionInfo.GetVersionInfo(path.ToString()).FileVersion; 41 42 v = v.Substring(0, v.LastIndexOf(".")); 43 var url = "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_" + v; //ここを変更する? 44 // 対応するChromeDriverのバージョン 45 return new HttpClient().GetStringAsync(url); 46 } 47 } 48 } 49}

補足情報(FW/ツールのバージョンなど)

Microsoft Visual Studio Community 2022 Preview
.NET Framework 4.7.2
Selenium.WebDriver 3.141.0
WebDriverManager 2.11.3

TN8001👍を押しています

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

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

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

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

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

woria

2021/08/30 04:03

Microsoft Edgeに対するコマンドを試しましたが、バージョン情報は得られませんでした(Edgeのパス?が得られました)。 今一度調べたところ、バージョンが取得できそうな記述があったのでこちらを試してみます。 Seleniumのchromedriver.exeとmsedgedriver.exeを自動更新する https://qiita.com/yk109/items/f34131c5f6ed3809678a
guest

回答1

0

ベストアンサー

追記

Selenium 4.6以降Selenium自身にドライバDL機能が含まれています。
Selenium Manager (Beta) | Selenium
[.NET] Selenium に純正の WebDriver Manager が付属するようになった話 : @jsakamoto


「今インストールされてるChromeに合わせてバージョンをセットアップ」する方法が紹介されているため、そちらを参考にしたいと思います。

言及されてしまったので新たに調べなおしましたが、バージョンもだいぶ上がってすごく簡単になっています。
VersionResolveStrategy.MatchingBrowserというオプションをつけるだけになっています。
rosolko/WebDriverManager.Net: Automatic Selenium Webdriver binaries management for .Net

Or you can specify to automatically download a driver matching the version of the browser that is installed in your machine (only for Chrome, Edge, Firefox and Internet Explorer):

Chrome・Edge・Firefox・IEに対応済みです。

その中で、

Only for Google Chrome so far, you can specify to automatically download a chromedriver.exe matching the version of the browser that is installed in your machine:

って書いてあるんですけど、Edgeの実装あるんですよね^^;(Linux待ち??)
WebDriverManager.Net/EdgeConfig.cs at master · rosolko/WebDriverManager.Net

なので.NET Framework 4.7.2(Windows)であれば、普通にオプション指定でよさそうです。

cs

1using OpenQA.Selenium.Edge; 2using System; 3using WebDriverManager; 4using WebDriverManager.DriverConfigs.Impl; 5using WebDriverManager.Helpers; 6 7namespace Questions356826 8{ 9 class Program 10 { 11 static void Main() 12 { 13 Console.WriteLine("EdgeDriverを取得中"); 14 15 // 最新版 16 //new DriverManager().SetUpDriver(new EdgeConfig()); 17 18 // インストールされているバージョン 19 new DriverManager().SetUpDriver(new EdgeConfig(), VersionResolveStrategy.MatchingBrowser); 20 21 Console.WriteLine("EdgeDriverを取得終了"); 22 23 var edge = new EdgeDriver(); 24 edge.Navigate().GoToUrl("https://teratail.com/"); 25 } 26 } 27}

投稿2021/09/01 08:41

編集2023/08/14 13:18
TN8001

総合スコア9326

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

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

woria

2021/09/03 02:33

アンサーありがとうございます! インストールされているバージョンに合わせる設定については初耳でした。 Chromeで試してみたところ、ちゃんとセットアップできました。 Edgeに関して単体テストでEdge起動してみても、 OpenQA.Selenium.DriverServiceNotFoundException: The MicrosoftWebDriver.exe file does not exist in the current directory or in a directory on the PATH environment variable. The driver can be downloaded at http://go.microsoft.com/fwlink/?LinkId=619687. と出てしまうので、そもそもPATH環境変数の設定ミスかな? 色々見直してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問