1
- using System . Linq ;
1
+ using System ;
2
+ using System . IO ;
2
3
using System . Net ;
3
- using AngleSharp . Html . Parser ;
4
+ using System . Runtime . InteropServices ;
4
5
5
6
namespace WebDriverManager . DriverConfigs . Impl
6
7
{
7
8
public class EdgeConfig : IDriverConfig
8
9
{
10
+ private const string BaseVersionPatternUrl = "https://msedgedriver.azureedge.net/<version>/" ;
11
+
9
12
public virtual string GetName ( )
10
13
{
11
14
return "Edge" ;
12
15
}
13
16
14
17
public virtual string GetUrl32 ( )
15
18
{
16
- return "https://az813057.vo.msecnd.net/webdriver/msedgedriver_x86/msedgedriver.exe ";
19
+ return $ " { BaseVersionPatternUrl } edgedriver_win32.zip ";
17
20
}
18
21
19
22
public virtual string GetUrl64 ( )
20
23
{
21
- return "https://az813057.vo.msecnd.net/webdriver/msedgedriver_x64/msedgedriver.exe" ;
24
+ return RuntimeInformation . IsOSPlatform ( OSPlatform . OSX )
25
+ ? $ "{ BaseVersionPatternUrl } edgedriver_mac64.zip"
26
+ : $ "{ BaseVersionPatternUrl } edgedriver_win64.zip";
22
27
}
23
28
24
29
public virtual string GetBinaryName ( )
@@ -28,18 +33,19 @@ public virtual string GetBinaryName()
28
33
29
34
public virtual string GetLatestVersion ( )
30
35
{
31
- using ( var client = new WebClient ( ) )
36
+ var uri = new Uri ( "https://msedgedriver.azureedge.net/LATEST_BETA" ) ;
37
+ var webRequest = WebRequest . Create ( uri ) ;
38
+ using ( var response = webRequest . GetResponse ( ) )
32
39
{
33
- var htmlCode =
34
- client . DownloadString ( "https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver" ) ;
35
- var parser = new HtmlParser ( ) ;
36
- var document = parser . ParseDocument ( htmlCode ) ;
37
- var version = document . QuerySelectorAll ( ".driver-download > a + p" )
38
- . Select ( element => element . TextContent )
39
- . FirstOrDefault ( )
40
- ? . Split ( ' ' ) [ 1 ]
41
- . Split ( ' ' ) [ 0 ] ;
42
- return version ;
40
+ using ( var content = response . GetResponseStream ( ) )
41
+ {
42
+ if ( content == null ) throw new ArgumentNullException ( $ "Can't get content from URL: { uri } ") ;
43
+ using ( var reader = new StreamReader ( content ) )
44
+ {
45
+ var version = reader . ReadToEnd ( ) . Trim ( ) ;
46
+ return version ;
47
+ }
48
+ }
43
49
}
44
50
}
45
51
}
0 commit comments