示例#1
0
        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());
            }
        }
示例#3
0
        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()));
            }
        }
示例#4
0
 public DiRegistrations(PreferredSeleniumBrowser browser)
 {
     _browser = browser;
 }
示例#5
0
 public DiRegistrations()
 {
     _browser = PreferredSeleniumBrowser.PhantomJS;
 }
 public SimpleWebDriverProvider(PreferredSeleniumBrowser browser)
 {
     _preferredBrowser = browser;
 }