/// <summary>
        /// Create authentication ticket and save into cookie
        /// </summary>
        /// <param name="userName">UserName of authenticated user</param>
        /// <param name="token">Role of authenticated user</param>
        public static void SignIn(string userName, string token)
        {
            int sessionTimeOut = 60;

            //Created authentication ticket
            var authTicket = new FormsAuthenticationTicket(userName, true, sessionTimeOut);

            //Encrypt authentication ticket
            string cookieContents = FormsAuthentication.Encrypt(authTicket);

            //Create cookie for authentication ticket
            var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, cookieContents)
            {
                Path = FormsAuthentication.FormsCookiePath
            };

            //Save authentication ticket into cookie
            if (System.Web.HttpContext.Current != null)
            {
                System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
                var tokenKey = ApplicationSettings.Token;
                Cookies.AddCookies(tokenKey, token);
            }
        }
        protected override Cookies GetCookies(ISpider spider)
        {
            if (string.IsNullOrEmpty(User) || string.IsNullOrEmpty(Password) || UserSelector == null || PasswordSelector == null)
            {
                throw new SpiderException("Arguments of WebDriverCookieInjector are incorrect.");
            }
            var cookies = new Dictionary <string, string>();

            var webDriver = CreateWebDriver();

            try
            {
                webDriver.Navigate().GoToUrl(Url);
                Thread.Sleep(10000);

                BeforeInputInfo(webDriver);

                if (UserSelector != null)
                {
                    var user = FindElement(webDriver, UserSelector);
                    user.Clear();
                    user.SendKeys(User);
                    Thread.Sleep(1500);
                }

                if (PasswordSelector != null)
                {
                    var pass = FindElement(webDriver, PasswordSelector);
                    pass.Clear();
                    pass.SendKeys(Password);
                    Thread.Sleep(1500);
                }

                var submit = FindElement(webDriver, SubmitSelector);
                submit.Click();
                Thread.Sleep(10000);

                AfterLoginComplete(webDriver);

                var cookieList = webDriver.Manage().Cookies.AllCookies.ToList();
                if (cookieList.Count > 0)
                {
                    foreach (var cookieItem in cookieList)
                    {
                        cookies.Add(cookieItem.Name, cookieItem.Value);
                    }
                }

                webDriver.Dispose();
            }
            catch (Exception e)
            {
                Logger.AllLog(spider.Identity, "Get cookie failed.", NLog.LogLevel.Error, e);
                webDriver.Dispose();
                return(null);
            }

            var result = new Cookies();

            result.AddCookies(cookies, new Uri(Url).Host);
            return(result);
        }