public object Execute()
        {
            string result = string.Join(",", Commands.Select(_ => _.Execute()));

            OutputSingleton.WriteToTextOutputters(result);
            return(result);
        }
Пример #2
0
        public void StartScript(string scriptText)
        {
            using (_SeleniumExecutionEngine = new SeleniumExecution.SeleniumExecutionEngine(RunOptions.WebDriverPath, new SeleniumExecutionEngineOptions()
            {
                DisableWebSecurity = RunOptions.DisableWebSecurity, RunHeadlessBrowser = RunOptions.NoBrowser
            }))
            {
                _CrawlLangEngine = new CrawlLangEngine(scriptText, _SeleniumExecutionEngine);
                _CrawlLangEngine.ParseScript();
                if (_CrawlLangEngine.HasErrors)
                {
                    ErrorMessages = _CrawlLangEngine.Errors;
                }
                else
                {
                    ExecutionPlan plan = _CrawlLangEngine.GenerateExecutionPlan();
                    try
                    {
                        _SeleniumExecutionEngine.StartEngine();

                        IsRunning = true;
                        OutputSingleton.ClearAllOutputters();
                        if (!string.IsNullOrWhiteSpace(RunOptions.OutputFilePath))
                        {
                            CreepyCrawly.Output.OutputSingleton.CreateFileTextOutputter(RunOptions.OutputFilePath);
                        }
                        if (!string.IsNullOrWhiteSpace(RunOptions.ImageOutputDirectory))
                        {
                            CreepyCrawly.Output.OutputSingleton.CreateImageFileOutputter(RunOptions.ImageOutputDirectory);
                        }
                        CreepyCrawly.Output.OutputSingleton.CreateStringOutputter();
                        CreepyCrawly.Output.OutputSingleton.AssignEventHandlerToStringOutputters(_OutputEventHandler);
                        if (_SeleniumExecutionEngine.IsEngineOk)
                        {
                            plan.Commands.ForEach(cmd =>
                            {
                                cmd.Execute();
                            });
                        }
                        else
                        {
                            CreepyCrawly.Output.OutputSingleton.WriteToStringOutputters("Engine wasn't started :(\nMaybe you are missing an appropriate chromedriver in the app root directory.");
                        }
                    }
                    catch (Exception e)
                    {
                        if (IsRunning)
                        {
                            CreepyCrawly.Output.OutputSingleton.WriteToStringOutputters(string.Format("An error occurred during script execution with message:\n{0}\nSee the following stacktrace:\n{1}", e.Message, e.StackTrace));
                        }
                    }
                }
            }
        }
Пример #3
0
 public object Execute()
 {
     try
     {
         object result = Execution.Invoke(Selector, Regex);
         OutputSingleton.WriteToTextOutputters(result);
         return(result);
     }
     catch (Exception e)
     {
         ErrorHandler.ReportCommandExecutionFailed(e, Name);
         return(null);
     }
 }
Пример #4
0
 public object Execute()
 {
     try
     {
         object result   = Execution.Invoke(Selector);
         string fileName = Guid.NewGuid().ToString();
         OutputSingleton.WriteToImageOutputtersWithFileName(result, fileName);
         return(fileName);
     }
     catch (Exception e)
     {
         ErrorHandler.ReportCommandExecutionFailed(e, Name);
         return(null);
     }
 }
Пример #5
0
        public object Execute()
        {
            try
            {
                string[] results = (string[])Execution.Invoke(Selector);
                foreach (var result in results)
                {
                    OutputSingleton.WriteToImageOutputters(result);
                }

                return(1);
            }
            catch (Exception e)
            {
                ErrorHandler.ReportCommandExecutionFailed(e, Name);
                return(null);
            }
        }