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

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

新規登録して質問してみよう
ただいま回答率
86.02%
Chrome

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

C#

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

selenium

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

Q&A

解決済

C#におけるChromeDriverの自動アップデートのやり方

Ku-ro-ko
Ku-ro-ko

総合スコア5

Chrome

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

C#

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

selenium

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

1回答

0グッド

1クリップ

5792閲覧

投稿2019/12/07 03:19

前提・実現したいこと

C#のコンソールアプリケーションでOpenQA.Selenium.Chromeを使って、自動化ソフトウェアを作っています。
ChromeDriverを自動アップデートするようにしたいのですが、WebDriverManagerの使い方が分からず、困っています。
自動アップデートするコードを教えてほしいです。
よろしくお願い致します。

補足情報

Microsoft Visual Studio Community 2019
.NET Framework 4.7.2
Selenium.WebDriver 3.141.0
Selenium.WebDriver.ChromeDriver 78.0.3904.10500
WebDriverManager 2.7.0

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

Ku-ro-ko

2019/12/07 09:42

こちらのサイトを参考にして、 using WebDriverManager; using WebDriverManager.DriverConfigs; using WebDriverManager.DriverConfigs.Impl; new DriverManager().SetUpDriver(new ChromeConfig(), "Latest"); このように実行しましたが、アップデートされませんでした。 サンプルのソースコードをいただけないでしょうか。

回答1

3

ベストアンサー

2021/9/1 追記

別質問で言及されてしまったので、現在の方法を書いておきます(すごく簡単になっています)
C# - C# WebDriverManagerで、今インストールされてるEdgeのバージョンに合わせてEdgeDriverをセットアップする|teratail

回答当時はWebDriverManager 2.7.0でしたが、今は2.11.3とだいぶバージョンが上がっています。
NuGet Gallery | WebDriverManager 2.11.3

GitHubにすべて書いてありますが、SetUpDriverVersionResolveStrategy.MatchingBrowserオプションをつけるだけで終了です。
rosolko/WebDriverManager.Net: Automatic Selenium Webdriver binaries management for .Net

C#

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

以下古い内容

NuGetはSelenium.WebDriver WebDriverManagerの2つだけの状態で、

Chromeが常に最新版であれば、

C#

1using System; 2using OpenQA.Selenium.Chrome; 3using WebDriverManager; 4using WebDriverManager.DriverConfigs.Impl; 5 6namespace Questions227899 7{ 8 class Program 9 { 10 static void Main() 11 { 12 Console.WriteLine("ChromeDriverを取得中"); 13 new DriverManager().SetUpDriver(new ChromeConfig()); 14 Console.WriteLine("ChromeDriverを取得終了"); 15 16 var chrome = new ChromeDriver(); 17 chrome.Navigate().GoToUrl("https://teratail.com/"); 18 } 19 } 20}

これで取れました。

今インストールされてるChromeに合わせる場合、

C#

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

こんな感じでしょうか(雑いです)

投稿2019/12/07 09:55

編集2021/09/01 08:44
TN8001

総合スコア8048

woria, Ku-ro-ko, Zuishin👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

Ku-ro-ko

2019/12/08 03:25

解決しました。 ありがとうございました。

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Chrome

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

C#

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

selenium

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