public static IWebDriver GetWebDriver(PreferredSeleniumBrowser preferredBrowser) { IWebDriver webDriver = null; bool success = false; int tries = 10; while (!success) { webDriver = StartWebDriver(preferredBrowser); success = HealthCheck(webDriver, throwException: (tries-- <= 0)); if (!success) { try { webDriver.Quit(); } catch (Exception e) { var x = 2; } } } return(webDriver); }
public WebDriverProvider(int maxNumberOfDrivers, int maxMinutesToKeepClaim, PreferredSeleniumBrowser browser, ILog logger) { _maxMinutesToKeepClaim = maxMinutesToKeepClaim; _claimedDrivers = new ConcurrentDictionary<Guid, DateTime>(); _preferredBrowser = browser; _logger = logger; _stopCleanupTask = false; _idleWebDriverCleaner = Task.Run(async () => { while (!_stopCleanupTask) { await Task.Delay(10000); var removeThese = new List<Guid>(); foreach (var webdriver in _claimedDrivers) { var claimedOverdue = DateTime.UtcNow.Subtract(webdriver.Value).TotalMinutes > _maxMinutesToKeepClaim; if (!claimedOverdue) continue; var driver = _drivers.FirstOrDefault(g => g.Id == webdriver.Key); if (driver != null) { _logger.Warn("Releasing webdriver " + driver.Id + " due to inactivity beyond " + _maxMinutesToKeepClaim + " minutes"); Release(driver, false); } else { removeThese.Add(webdriver.Key); } } foreach (var remove in removeThese) { DateTime timestamp; bool removed = false; do { removed = _claimedDrivers.TryRemove(remove, out timestamp); } while (!removed); } } }); _drivers = new List<PooledWebDriver>(); for (int i=0; i<maxNumberOfDrivers; i++) { _drivers.Add(new PooledWebDriver()); } }
private static IWebDriver StartWebDriver(PreferredSeleniumBrowser preferredBrowser) { switch (preferredBrowser) { case PreferredSeleniumBrowser.Chrome: return(GetChromeDriver(headless: false)); case PreferredSeleniumBrowser.ChromeHeadless: return(GetChromeDriver(headless: true)); case PreferredSeleniumBrowser.FireFox: return(GetFirefoxDriver()); case PreferredSeleniumBrowser.PhantomJS: return(GetPhantomJSDriver()); default: return(StartWebDriver(DefaultBrowser())); } }
public DiRegistrations(PreferredSeleniumBrowser browser) { _browser = browser; }
public DiRegistrations() { _browser = PreferredSeleniumBrowser.PhantomJS; }
public SimpleWebDriverProvider(PreferredSeleniumBrowser browser) { _preferredBrowser = browser; }