public BrokerTableScraper(List <Import> imports,
                           BrokerTransactionBuilder brokerTransactionBuilder,
                           BrokerTransactionProcessor brokerTransactionProcessor,
                           BrokerTransactionSimulator brokerTransactionSimulator,
                           BrokerTabNavigator brokerTabNavigator,
                           ImportProcessor importProcessor,
                           IWebDriver webDriver)
 {
     _webDriver = webDriver;
     _imports   = imports;
     _brokerTransactionBuilder   = brokerTransactionBuilder;
     _brokerTransactionProcessor = brokerTransactionProcessor;
     _brokerTransactionSimulator = brokerTransactionSimulator;
     _brokerTabNavigator         = brokerTabNavigator;
     _importProcessor            = importProcessor;
 }
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public TaskResult Scrape(TransactionParameter transactionParameter,
                                 List <Import> batch,
                                 IWebDriver webDriver)
        {
            try
            {
                var loginNavigator = new LoginNavigator(webDriver);
                loginNavigator.Navigate();

                var loginSimulator = new LoginSimulator(webDriver, transactionParameter);
                loginSimulator.Simulate();

                Logger.Info("initiating broker navigator");
                var brokerTabNavigator = new BrokerTabNavigator(webDriver);
                Logger.Info("broker navigation in progress");
                brokerTabNavigator.Navigate();
                Logger.Info("initiating table scraper");

                var brokerTableScraper = new BrokerTableScraper(batch.ToList(),
                                                                new BrokerTransactionBuilder(),
                                                                new BrokerTransactionProcessor(_brokerTransactionRepository),
                                                                new BrokerTransactionSimulator(webDriver),
                                                                brokerTabNavigator,
                                                                _importProcessor,
                                                                webDriver);
                brokerTableScraper.Scrape(transactionParameter);
            }
            catch (Exception e)
            {
                Logger.Error(e);
                if (e.Message.Contains("Back-office is currently updating"))
                {
                    throw new BackOfficeOfflineException("back office exception detected", e);
                }
            }

            var taskResult = new TaskResult {
                IsSuccessful = true
            };

            taskResult.SetData(webDriver);
            return(taskResult);
        }