11using Aquality . Selenium . Configurations ;
22using Aquality . Selenium . Configurations . WebDriverSettings ;
3+ using Aquality . Selenium . Core . Utilities ;
4+ using OpenQA . Selenium ;
35using OpenQA . Selenium . Chrome ;
46using OpenQA . Selenium . Edge ;
57using OpenQA . Selenium . Firefox ;
@@ -39,27 +41,27 @@ private Browser CreateBrowser()
3941 {
4042 case BrowserName . Chrome :
4143 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 ) ;
4446 break ;
4547 case BrowserName . Firefox :
4648 SetUpDriver ( new FirefoxConfig ( ) , driverSettings ) ;
4749 FirefoxDriverService geckoService = FirefoxDriverService . CreateDefaultService ( ) ;
4850 geckoService . Host = "::1" ;
49- driver = new FirefoxDriver ( geckoService , ( FirefoxOptions ) driverSettings . DriverOptions , commandTimeout ) ;
51+ driver = GetDriver < FirefoxDriver > ( geckoService , ( FirefoxOptions ) driverSettings . DriverOptions , commandTimeout ) ;
5052 break ;
5153 case BrowserName . IExplorer :
5254 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 ) ;
5557 break ;
5658 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 ) ;
5961 break ;
6062 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 ) ;
6365 break ;
6466 default :
6567 throw new ArgumentOutOfRangeException ( $ "Browser { browserName } is not supported.") ;
@@ -68,6 +70,12 @@ private Browser CreateBrowser()
6870 return new Browser ( driver ) ;
6971 }
7072
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+
7179 private static void SetUpDriver ( IDriverConfig driverConfig , IDriverSettings driverSettings )
7280 {
7381 var architecture = driverSettings . SystemArchitecture . Equals ( Architecture . Auto ) ? ArchitectureHelper . GetArchitecture ( ) : driverSettings . SystemArchitecture ;
0 commit comments