1
1
using Aquality . Selenium . Configurations ;
2
2
using Aquality . Selenium . Configurations . WebDriverSettings ;
3
+ using Aquality . Selenium . Core . Utilities ;
4
+ using OpenQA . Selenium ;
3
5
using OpenQA . Selenium . Chrome ;
4
6
using OpenQA . Selenium . Edge ;
5
7
using OpenQA . Selenium . Firefox ;
@@ -39,27 +41,27 @@ private Browser CreateBrowser()
39
41
{
40
42
case BrowserName . Chrome :
41
43
SetUpDriver ( new ChromeConfig ( ) , driverSettings ) ;
42
- driver = new ChromeDriver ( ChromeDriverService . CreateDefaultService ( ) ,
43
- ( ChromeOptions ) driverSettings . DriverOptions , commandTimeout ) ;
44
+ driver = GetDriver < ChromeDriver > ( ChromeDriverService . CreateDefaultService ( ) ,
45
+ ( ChromeOptions ) driverSettings . DriverOptions , commandTimeout ) ;
44
46
break ;
45
47
case BrowserName . Firefox :
46
48
SetUpDriver ( new FirefoxConfig ( ) , driverSettings ) ;
47
49
FirefoxDriverService geckoService = FirefoxDriverService . CreateDefaultService ( ) ;
48
50
geckoService . Host = "::1" ;
49
- driver = new FirefoxDriver ( geckoService , ( FirefoxOptions ) driverSettings . DriverOptions , commandTimeout ) ;
51
+ driver = GetDriver < FirefoxDriver > ( geckoService , ( FirefoxOptions ) driverSettings . DriverOptions , commandTimeout ) ;
50
52
break ;
51
53
case BrowserName . IExplorer :
52
54
SetUpDriver ( new InternetExplorerConfig ( ) , driverSettings ) ;
53
- driver = new InternetExplorerDriver ( InternetExplorerDriverService . CreateDefaultService ( ) ,
54
- ( InternetExplorerOptions ) driverSettings . DriverOptions , commandTimeout ) ;
55
+ driver = GetDriver < InternetExplorerDriver > ( InternetExplorerDriverService . CreateDefaultService ( ) ,
56
+ ( InternetExplorerOptions ) driverSettings . DriverOptions , commandTimeout ) ;
55
57
break ;
56
58
case BrowserName . Edge :
57
- driver = new EdgeDriver ( EdgeDriverService . CreateDefaultService ( ) ,
58
- ( EdgeOptions ) driverSettings . DriverOptions , commandTimeout ) ;
59
+ driver = GetDriver < EdgeDriver > ( EdgeDriverService . CreateDefaultService ( ) ,
60
+ ( EdgeOptions ) driverSettings . DriverOptions , commandTimeout ) ;
59
61
break ;
60
62
case BrowserName . Safari :
61
- driver = new SafariDriver ( SafariDriverService . CreateDefaultService ( ) ,
62
- ( SafariOptions ) driverSettings . DriverOptions , commandTimeout ) ;
63
+ driver = GetDriver < SafariDriver > ( SafariDriverService . CreateDefaultService ( ) ,
64
+ ( SafariOptions ) driverSettings . DriverOptions , commandTimeout ) ;
63
65
break ;
64
66
default :
65
67
throw new ArgumentOutOfRangeException ( $ "Browser { browserName } is not supported.") ;
@@ -68,6 +70,12 @@ private Browser CreateBrowser()
68
70
return new Browser ( driver ) ;
69
71
}
70
72
73
+ private RemoteWebDriver GetDriver < T > ( DriverService driverService , DriverOptions driverOptions , TimeSpan commandTimeout ) where T : RemoteWebDriver
74
+ {
75
+ return AqualityServices . Get < IActionRetrier > ( ) . DoWithRetry ( ( ) =>
76
+ ( T ) Activator . CreateInstance ( typeof ( T ) , driverService , driverOptions , commandTimeout ) ) ;
77
+ }
78
+
71
79
private static void SetUpDriver ( IDriverConfig driverConfig , IDriverSettings driverSettings )
72
80
{
73
81
var architecture = driverSettings . SystemArchitecture . Equals ( Architecture . Auto ) ? ArchitectureHelper . GetArchitecture ( ) : driverSettings . SystemArchitecture ;
0 commit comments