コード例 #1
0
        protected void InitTasks()
        {
            _driverTasks = new BaseWebDriverStrategy {
                RequestUrl              = settings.BaseUrl,
                TasksList               = new List <BaseWebDriverTaskStrategy>(),
                UseProxy                = false,
                LaunchIncognito         = false,
                LaunchHeadless          = false,
                DisableInfoBar          = true,
                IgnoreCertificateErrors = true
            };

            _driverTasks.TasksList.Add(new BaseWebDriverTaskStrategy {
                TaskType       = BaseWebDriverTasksTypes.TaskUpdateFieldData,
                RequestElement = "#username",
                NewValue       = "dev-artjoker"
            });

            _driverTasks.TasksList.Add(new BaseWebDriverTaskStrategy {
                TaskType       = BaseWebDriverTasksTypes.TaskUpdateFieldData,
                RequestElement = "#password",
                NewValue       = "ef(*K:P=6%`xFb*=",
            });

            _driverTasks.TasksList.Add(new BaseWebDriverTaskStrategy {
                TaskType     = BaseWebDriverTasksTypes.TaskExecuteScript,
                ScriptSource = "document.getElementById('form1').submit()"
            });
        }
コード例 #2
0
        public ChromeDriverResolver(BaseWebDriverStrategy options, WebScrapperBaseProxyEntity _proxy, string url, BaseLogger _logger)
        {
            settings = options;
            _l       = _logger;
            _baseUrl = url;

            _d = new DirectoriesService();
            _f = new FilesWriter();

            _ps = _proxy;

            DriverDependenciesDirectory = $@"{Directory.GetCurrentDirectory()}/Scrapper/Resources/scripts/ChromeDriver/js/";
            DriverResourcesDirectory    = $"{Directory.GetCurrentDirectory()}/Scrapper/Resources/";
            DriverBaseExtensionsPath    = $"{DriverResourcesDirectory}selenium/chrome/proxy.plugin/";
        }
コード例 #3
0
        public WebScrapperBaseCollectionsProcessorEntity FindCollections(WebScrapperBaseCollectionsProcessorEntity strategy)
        {
            var _s = new BaseWebDriverStrategy {
            };
            var o  = new ChromeOptions();

            o.AddArgument("ignore-certificate-errors");
            o.AddArgument("disable-infobars");
            // o.AddArgument("--headless");
            IWebDriverResolver _driver = new ChromeDriverResolver(_s, new Entities.WebScrapperBaseProxyEntity(), strategy.DriverSettings.RequestUrl, _l);

            if (!_driver.Initialize())
            {
                _l.error($"Fatal: instance {strategy.DriverSettings.RequestUrl} cannot be initialized!");
                _driver.Dispose();
                return(strategy);
            }
            if (!ReferenceEquals(strategy.DriverSettings.TasksList, null) &&
                strategy.DriverSettings.TasksList.Count > 0)
            {
                foreach (var task in strategy.DriverSettings.TasksList)
                {
                    if (task.TaskType.Equals(BaseWebDriverTasksTypes.TaskExecuteScript))
                    {
                        string source = String.Empty;
                        switch (task.ScriptSourceType)
                        {
                        case WebScrapper.Scrapper.Entities.enums.By.FileSource:
                            source = _f.Read($"{Directory.GetCurrentDirectory()}/Scrapper/Resources/{task.ScriptSource}");
                            if (ReferenceEquals(source, String.Empty))
                            {
                                _l.error($"Fatal: cannot load script from file {Directory.GetCurrentDirectory()}/Scrapper/Resources/{task.ScriptSource}");
                                _driver.Dispose();
                                return(strategy);
                            }
                            break;

                        case WebScrapper.Scrapper.Entities.enums.By.StringSource:
                            source = task.ScriptSource;
                            break;
                        }
                        string context = _driver.GetDataFromPage(task.RequestElement, source);
                        if (ReferenceEquals(context, String.Empty))
                        {
                            _l.error($"Chrome driver: fatal, execution script failed, visit application error logs to get more information about problem, script source: {source}");
                        }
                        try
                        {
                            var l = context.Split("||||").ToList();
                            strategy.Collections = l;
                        }
                        catch (Exception e)
                        {
                            _l.error($"Error in processing script result: {e.Message} -> {e.StackTrace}");
                            _driver.Dispose();
                            return(strategy);
                        }
                    }
                }
            }
            _driver.Dispose();
            return(strategy);
        }
コード例 #4
0
 protected abstract void ProcessWebDriverEntities(IWebDriverResolver WebDriver, BaseWebDriverStrategy strategy);