回答編集履歴

3

見直しキャンペーン中

2023/08/09 10:33

投稿

TN8001
TN8001

スコア9813

test CHANGED
@@ -1,3 +1,11 @@
1
+ 追記
2
+
3
+ Selenium 4.6以降Selenium自身にドライバDL機能が含まれています。
4
+ [Selenium Manager (Beta) | Selenium](https://www.selenium.dev/ja/documentation/selenium_manager/)
5
+ [[.NET] Selenium に純正の WebDriver Manager が付属するようになった話 : @jsakamoto](https://devadjust.exblog.jp/29530356/)
6
+
7
+ ---
8
+
1
9
  2021/9/1 追記
2
10
 
3
11
  別質問で言及されてしまったので、現在の方法を書いておきます(すごく簡単になっています)

2

見直しキャンペーン中

2023/07/17 06:06

投稿

TN8001
TN8001

スコア9813

test CHANGED
@@ -1,231 +1,116 @@
1
1
  2021/9/1 追記
2
2
 
3
-
4
-
5
3
  別質問で言及されてしまったので、現在の方法を書いておきます(すごく簡単になっています)
6
-
7
4
  [C# - C# WebDriverManagerで、今インストールされてるEdgeのバージョンに合わせてEdgeDriverをセットアップする|teratail](https://teratail.com/questions/356826)
8
5
 
9
-
10
-
11
6
  回答当時は`WebDriverManager 2.7.0`でしたが、今は`2.11.3`とだいぶバージョンが上がっています。
12
-
13
7
  [NuGet Gallery | WebDriverManager 2.11.3](https://www.nuget.org/packages/WebDriverManager/2.11.3)
14
8
 
15
-
16
-
17
9
  GitHubにすべて書いてありますが、`SetUpDriver`で`VersionResolveStrategy.MatchingBrowser`オプションをつけるだけで終了です。
18
-
19
10
  [rosolko/WebDriverManager.Net: Automatic Selenium Webdriver binaries management for .Net](https://github.com/rosolko/WebDriverManager.Net#automatic-way)
20
11
 
21
-
22
-
23
- ```C#
12
+ ```cs
24
-
25
13
  using OpenQA.Selenium.Chrome;
26
-
27
14
  using System;
28
-
29
15
  using WebDriverManager;
30
-
31
16
  using WebDriverManager.DriverConfigs.Impl;
32
-
33
17
  using WebDriverManager.Helpers;
34
18
 
35
-
36
-
37
19
  namespace Questions227899
38
-
39
20
  {
40
-
41
21
  class Program
42
-
43
22
  {
44
-
45
23
  static void Main()
46
-
47
24
  {
48
-
49
25
  Console.WriteLine("ChromeDriverを取得中");
50
26
 
51
-
52
-
53
27
  // 最新版
54
-
55
28
  //new DriverManager().SetUpDriver(new ChromeConfig());
56
29
 
57
-
58
-
59
30
  // インストールされているバージョン
60
-
61
31
  new DriverManager().SetUpDriver(new ChromeConfig(), VersionResolveStrategy.MatchingBrowser);
62
-
63
-
64
32
 
65
33
  Console.WriteLine("ChromeDriverを取得終了");
66
34
 
67
-
68
-
69
35
  var chrome = new ChromeDriver();
70
-
71
36
  chrome.Navigate().GoToUrl("https://teratail.com/");
72
-
73
37
  }
74
-
75
38
  }
76
-
77
39
  }
78
-
79
40
  ```
80
-
81
-
82
41
 
83
42
  ---
84
43
 
85
-
86
-
87
44
  以下古い内容
88
-
89
-
90
45
 
91
46
  NuGetは`Selenium.WebDriver` `WebDriverManager`の2つだけの状態で、
92
47
 
93
-
94
-
95
48
  Chromeが常に最新版であれば、
96
-
97
- ```C#
49
+ ```cs
98
-
99
50
  using System;
100
-
101
51
  using OpenQA.Selenium.Chrome;
102
-
103
52
  using WebDriverManager;
104
-
105
53
  using WebDriverManager.DriverConfigs.Impl;
106
54
 
55
+ namespace Questions227899
56
+ {
57
+ class Program
58
+ {
59
+ static void Main()
60
+ {
61
+ Console.WriteLine("ChromeDriverを取得中");
62
+ new DriverManager().SetUpDriver(new ChromeConfig());
63
+ Console.WriteLine("ChromeDriverを取得終了");
107
64
 
65
+ var chrome = new ChromeDriver();
66
+ chrome.Navigate().GoToUrl("https://teratail.com/");
67
+ }
68
+ }
69
+ }
70
+ ```
71
+ これで取れました。
72
+
73
+ 今インストールされてるChromeに合わせる場合、
74
+ ```cs
75
+ using System;
76
+ using System.Diagnostics;
77
+ using System.Net.Http;
78
+ using System.Threading.Tasks;
79
+ using Microsoft.Win32;
80
+ using OpenQA.Selenium.Chrome;
81
+ using WebDriverManager;
82
+ using WebDriverManager.DriverConfigs.Impl;
108
83
 
109
84
  namespace Questions227899
110
-
111
85
  {
112
-
113
86
  class Program
114
-
115
87
  {
116
-
117
- static void Main()
88
+ static async Task Main()
118
-
119
89
  {
120
-
121
90
  Console.WriteLine("ChromeDriverを取得中");
122
-
91
+ var version = await GetChromeDriverVersionAsync();
123
- new DriverManager().SetUpDriver(new ChromeConfig());
92
+ new DriverManager().SetUpDriver(new ChromeConfig(), version);
124
-
125
93
  Console.WriteLine("ChromeDriverを取得終了");
126
94
 
127
-
128
-
129
95
  var chrome = new ChromeDriver();
130
-
131
- chrome.Navigate().GoToUrl("https://teratail.com/");
132
-
133
- }
134
-
135
- }
136
-
137
- }
138
-
139
- ```
140
-
141
- これで取れました。
142
-
143
-
144
-
145
- 今インストールされてるChromeに合わせる場合、
146
-
147
- ```C#
148
-
149
- using System;
150
-
151
- using System.Diagnostics;
152
-
153
- using System.Net.Http;
154
-
155
- using System.Threading.Tasks;
156
-
157
- using Microsoft.Win32;
158
-
159
- using OpenQA.Selenium.Chrome;
160
-
161
- using WebDriverManager;
162
-
163
- using WebDriverManager.DriverConfigs.Impl;
164
-
165
-
166
-
167
- namespace Questions227899
168
-
169
- {
170
-
171
- class Program
172
-
173
- {
174
-
175
- static async Task Main()
176
-
177
- {
178
-
179
- Console.WriteLine("ChromeDriverを取得中");
180
-
181
- var version = await GetChromeDriverVersionAsync();
182
-
183
- new DriverManager().SetUpDriver(new ChromeConfig(), version);
184
-
185
- Console.WriteLine("ChromeDriverを取得終了");
186
-
187
-
188
-
189
- var chrome = new ChromeDriver();
190
-
191
96
  chrome.Navigate().GoToUrl("https://teratail.com/");
192
97
 
193
98
 
194
-
195
-
196
-
197
99
  Task<string> GetChromeDriverVersionAsync()
198
-
199
100
  {
200
-
201
101
  var path = Registry.GetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe", "", null);
202
-
203
102
  if(path == null)
204
-
205
103
  path = Registry.GetValue(@"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe", "", null);
206
-
207
104
  // インストールされているChromeのバージョン
208
-
209
105
  var v = FileVersionInfo.GetVersionInfo(path.ToString()).FileVersion;
210
106
 
211
-
212
-
213
107
  v = v.Substring(0, v.LastIndexOf("."));
214
-
215
108
  var url = "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_" + v;
216
-
217
109
  // 対応するChromeDriverのバージョン
218
-
219
110
  return new HttpClient().GetStringAsync(url);
220
-
221
111
  }
222
-
223
112
  }
224
-
225
113
  }
226
-
227
114
  }
228
-
229
115
  ```
230
-
231
116
  こんな感じでしょうか(雑いです)

1

WebDriverManager 2.11.3 での方法

2021/09/01 08:44

投稿

TN8001
TN8001

スコア9813

test CHANGED
@@ -1,3 +1,93 @@
1
+ 2021/9/1 追記
2
+
3
+
4
+
5
+ 別質問で言及されてしまったので、現在の方法を書いておきます(すごく簡単になっています)
6
+
7
+ [C# - C# WebDriverManagerで、今インストールされてるEdgeのバージョンに合わせてEdgeDriverをセットアップする|teratail](https://teratail.com/questions/356826)
8
+
9
+
10
+
11
+ 回答当時は`WebDriverManager 2.7.0`でしたが、今は`2.11.3`とだいぶバージョンが上がっています。
12
+
13
+ [NuGet Gallery | WebDriverManager 2.11.3](https://www.nuget.org/packages/WebDriverManager/2.11.3)
14
+
15
+
16
+
17
+ GitHubにすべて書いてありますが、`SetUpDriver`で`VersionResolveStrategy.MatchingBrowser`オプションをつけるだけで終了です。
18
+
19
+ [rosolko/WebDriverManager.Net: Automatic Selenium Webdriver binaries management for .Net](https://github.com/rosolko/WebDriverManager.Net#automatic-way)
20
+
21
+
22
+
23
+ ```C#
24
+
25
+ using OpenQA.Selenium.Chrome;
26
+
27
+ using System;
28
+
29
+ using WebDriverManager;
30
+
31
+ using WebDriverManager.DriverConfigs.Impl;
32
+
33
+ using WebDriverManager.Helpers;
34
+
35
+
36
+
37
+ namespace Questions227899
38
+
39
+ {
40
+
41
+ class Program
42
+
43
+ {
44
+
45
+ static void Main()
46
+
47
+ {
48
+
49
+ Console.WriteLine("ChromeDriverを取得中");
50
+
51
+
52
+
53
+ // 最新版
54
+
55
+ //new DriverManager().SetUpDriver(new ChromeConfig());
56
+
57
+
58
+
59
+ // インストールされているバージョン
60
+
61
+ new DriverManager().SetUpDriver(new ChromeConfig(), VersionResolveStrategy.MatchingBrowser);
62
+
63
+
64
+
65
+ Console.WriteLine("ChromeDriverを取得終了");
66
+
67
+
68
+
69
+ var chrome = new ChromeDriver();
70
+
71
+ chrome.Navigate().GoToUrl("https://teratail.com/");
72
+
73
+ }
74
+
75
+ }
76
+
77
+ }
78
+
79
+ ```
80
+
81
+
82
+
83
+ ---
84
+
85
+
86
+
87
+ 以下古い内容
88
+
89
+
90
+
1
91
  NuGetは`Selenium.WebDriver` `WebDriverManager`の2つだけの状態で、
2
92
 
3
93