private void OnElementValueChanging(object sender, WebElementEventArgs webElementEventArgs)
        {
            SeleniumLog log = SeleniumLog.Instance();

            if (log.Config.OnChangeValue_LogBeforeEvent)
            {
                log.SaveIndent("OnElementValueChanging");
                log.Indent();
                if (!string.IsNullOrEmpty(_keyInput))
                {
                    log.Debug("[Selenium Event]  Element value changing to [" + _keyInput + "]", take_screenshot: log.Config.OnChangeValue_TakeScreenshotBeforeEvent);
                }
                else
                {
                    log.Debug("[Selenium Event]  Element value changing to - NULL or EMPTY - ", take_screenshot: log.Config.OnChangeValue_TakeScreenshotBeforeEvent);
                }
                log.RestoreIndent("OnElementValueChanging", debug: true);
            }
        }
        private void OnScriptExecuted(object sender, WebDriverScriptEventArgs webDriverScriptEventArgs)
        {
            SeleniumLog log = SeleniumLog.Instance();

            if (log.Config.OnScriptExecute_LogAfterEvent)
            {
                log.Indent();
                log.Debug("[Selenium Event]  Script Executed Successfully!", take_screenshot: log.Config.OnScriptExecute_TakeScreenshotAfterEvent);
                log.Unindent();
            }
        }
        private void OnScriptExecuting(object sender, WebDriverScriptEventArgs webDriverScriptEventArgs)
        {
            SeleniumLog log = SeleniumLog.Instance();

            if (log.Config.OnScriptExecute_LogBeforeEvent)
            {
                log.Indent();
                log.Debug("[Selenium Event]  Script Executing: " + webDriverScriptEventArgs.Script, take_screenshot: log.Config.OnScriptExecute_TakeScreenshotBeforeEvent);
                log.Unindent();
            }
        }
        private void OnNavigatedForward(object sender, WebDriverNavigationEventArgs webDriverNavigationEventArgs)
        {
            SeleniumLog log = SeleniumLog.Instance();

            if (log.Config.OnNavigatingForward_LogAfterEvent)
            {
                log.Indent();
                log.Debug("[Selenium Event]  Navigate Forward Success!", take_screenshot: log.Config.OnNavigatingForward_TakeScreenshotAfterEvent);
                log.Unindent();
            }
        }
        private void OnNavigatingForward(object sender, WebDriverNavigationEventArgs webDriverNavigationEventArgs)
        {
            SeleniumLog log = SeleniumLog.Instance();

            if (log.Config.OnNavigatingForward_LogBeforeEvent)
            {
                log.Indent();
                log.Debug("[Selenium Event]  Navigating Forward: " + webDriverNavigationEventArgs.Url, take_screenshot: log.Config.OnNavigatingForward_TakeScreenshotBeforeEvent);
                log.Unindent();
            }
        }
        private void OnFindingElementCompleted(object sender, FindElementEventArgs findElementEventArgs)
        {
            SeleniumLog log = SeleniumLog.Instance();

            if (log.Config.OnFindElement_LogAfterEvent)
            {
                log.Indent();
                log.Debug("[Selenium Event]  Element Found!", take_screenshot: log.Config.OnFindElement_TakeScreenshotAfterEvent);
                log.Unindent();
            }
        }
        private void OnElementClicking(object sender, WebElementEventArgs webElementEventArgs)
        {
            SeleniumLog log = SeleniumLog.Instance();

            if (log.Config.OnClick_LogBeforeEvent)
            {
                log.Indent();
                log.Debug("[Selenium Event]  Clicking Element: " + _locator, take_screenshot: log.Config.OnClick_TakeScreenshotBeforeEvent);
                log.Unindent();
            }
        }
        private void OnElementClicked(object sender, WebElementEventArgs webElementEventArgs)
        {
            //Console.WriteLine("ElementClicked: " + webElementEventArgs.Element);
            SeleniumLog log = SeleniumLog.Instance();

            if (log.Config.OnClick_LogAfterEvent)
            {
                log.Indent();
                log.Debug("[Selenium Event]  Click Success!", take_screenshot: log.Config.OnClick_TakeScreenshotAfterEvent);
                log.Unindent();
            }
        }
        private void OnFindingElement(object sender, FindElementEventArgs findElementEventArgs)
        {
            SeleniumLog log = SeleniumLog.Instance();

            string[] FindMethodStr = findElementEventArgs.FindMethod.ToString().Split(':');
            _by      = FindMethodStr[0].Split('.')[1].Trim();
            _locator = FindMethodStr[1].Trim();

            if (log.Config.OnFindElement_LogBeforeEvent)
            {
                log.Indent();
                log.Debug("[Selenium Event]  Finding Element: " + _locator, take_screenshot: log.Config.OnFindElement_TakeScreenshotBeforeEvent);
                log.Unindent();
            }
        }
        private void OnElementValueChanged(object sender, WebElementEventArgs webElementEventArgs)
        {
            SeleniumLog log = SeleniumLog.Instance();

            if (log.Config.OnChangeValue_LogAfterEvent)
            {
                log.SaveIndent("OnElementValueChanged");
                log.Indent();
                log.Debug("[Selenium Event]  Successfully changed value [" + webElementEventArgs.Element.GetAttribute("value") + "]", take_screenshot: log.Config.OnChangeValue_TakeScreenshotAfterEvent);
                log.Unindent();

                if (!string.IsNullOrEmpty(_keyInput))
                {
                    //log.WriteLine("Input was: " + _keyInput);
                }
                log.RestoreIndent("OnElementValueChanged");
            }
        }