前提・実現したいこと
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
回答1件
あなたの回答
tips
プレビュー