|
1 | | -using System; |
| 1 | +using System; |
2 | 2 | using System.IO; |
3 | 3 | using System.Net; |
4 | 4 | using System.Runtime.InteropServices; |
| 5 | +using WebDriverManager.Helpers; |
5 | 6 |
|
6 | 7 | namespace WebDriverManager.DriverConfigs.Impl |
7 | 8 | { |
8 | 9 | public class ChromeConfig : IDriverConfig |
9 | 10 | { |
10 | 11 | private const string BaseVersionPatternUrl = "https://chromedriver.storage.googleapis.com/<version>/"; |
| 12 | + private const string LatestReleaseVersionUrl = "https://chromedriver.storage.googleapis.com/LATEST_RELEASE"; |
| 13 | + |
| 14 | + private const string ExactReleaseVersionPatternUrl = |
| 15 | + "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_<version>"; |
| 16 | + |
| 17 | + private const string BrowserExecutableFileName = "chrome.exe"; |
11 | 18 |
|
12 | 19 | public virtual string GetName() |
13 | 20 | { |
@@ -48,7 +55,20 @@ public virtual string GetBinaryName() |
48 | 55 |
|
49 | 56 | public virtual string GetLatestVersion() |
50 | 57 | { |
51 | | - var uri = new Uri("https://chromedriver.storage.googleapis.com/LATEST_RELEASE"); |
| 58 | + return GetLatestVersion(LatestReleaseVersionUrl); |
| 59 | + } |
| 60 | + |
| 61 | + public virtual string GetMatchingBrowserVersion() |
| 62 | + { |
| 63 | + var rawChromeBrowserVersion = RegistryHelper.GetInstalledBrowserVersion(BrowserExecutableFileName); |
| 64 | + var chromeBrowserVersion = VersionHelper.GetVersionWithoutRevision(rawChromeBrowserVersion); |
| 65 | + var url = ExactReleaseVersionPatternUrl.Replace("<version>", chromeBrowserVersion); |
| 66 | + return GetLatestVersion(url); |
| 67 | + } |
| 68 | + |
| 69 | + private static string GetLatestVersion(string url) |
| 70 | + { |
| 71 | + var uri = new Uri(url); |
52 | 72 | var webRequest = WebRequest.Create(uri); |
53 | 73 | using (var response = webRequest.GetResponse()) |
54 | 74 | { |
|
0 commit comments