void IAutoWeb.Next(WebBrowser webBrowser1)
        {
            Uri url = webBrowser1.Url;
            // Fix bug: Why sometimes it's null?
            if(url == null)
            {
                return;
            }

            Console.Out.WriteLine("Next>>");
            Console.Out.WriteLine(url);

            if (url.ToString().StartsWith(URL_LOGIN))
            {
                this.LoginSupportedByWangWang(webBrowser1.Document);
            }
            else if (url.ToString().StartsWith(URL_ASSET))
            {
                MoneyDatabaseUpdater dbUpdater = new MoneyDatabaseUpdater();
                if (this._isTotalUpdated == false)
                {
                    this._isTotalUpdated = this.RetrieveTotal(webBrowser1.Document, dbUpdater);
                }

                if (this.RetrieveDaily(webBrowser1.Document, dbUpdater))
                {
                    if (!this.ClickNextTab(webBrowser1.Document))
                    {
                        webBrowser1.Navigate(URL_MIAO);
                    }
                }
            }
            else if (url.ToString().StartsWith(URL_MIAO))
            {
                if (this.GetMaoquan(webBrowser1.Document))
                {
                    webBrowser1.Navigate(URL_ETAO);
                }
            }
            else if (url.ToString().StartsWith(URL_ETAO))
            {
                if (this.SignETao(webBrowser1.Document))
                {
                    this._completed = true;
                }
            }
            else
            {

            }
        }
        private bool RetrieveTotal(HtmlDocument doc, MoneyDatabaseUpdater dbUpdater)
        {
            double earn = 0;
            double left = 0;
            foreach (HtmlElement eleTd in doc.GetElementsByTagName("h3"))
            {
                string textTotal = eleTd.InnerText;
                if (eleTd.InnerText.Contains("总金额"))
                {
                    left = this.GetAmountFromText(eleTd.InnerText);
                }
                else if (eleTd.InnerText.Contains("历史累计收益"))
                {
                    earn = this.GetAmountFromText(eleTd.Parent.GetElementsByTagName("div")[0].InnerText);
                }
            }
            this._message = string.Format("今日\r\n余额:{0}元\r\n累计收益:{1}元", left, earn);

            dbUpdater.AddTotal(DateTime.Now, earn, left);
            return true;
        }
        private bool RetrieveDaily(HtmlDocument doc, MoneyDatabaseUpdater dbUpdater)
        {
            bool isRetrievedAny = false;

            foreach (HtmlElement eleTr in doc.GetElementsByTagName("tr"))
            {
                DateTime billTime = DateTime.Now;
                double amount = 0;
                byte changeType = 0;

                foreach(HtmlElement eleTd in eleTr.Children)
                {
                    string className = eleTd.GetAttribute("classname");
                    if (className.Contains("billTime"))
                    {
                        try
                        {
                            billTime = DateTime.Parse(eleTd.InnerText);
                        }
                        catch
                        {
                            continue;
                        }
                    }
                    else if (className.Contains("ft-bold"))
                    {
                        amount = this.GetAmountFromText(eleTd.InnerText);
                    }
                    else if (className.Contains("billAmount"))
                    {
                        changeType = this.GetTypeFromText(eleTd.InnerText);
                    }
                }

                if (amount != 0)
                {
                    Debug.Assert(changeType != 0, "未知的类型出现了!");
                    dbUpdater.AddDaily(billTime, amount, changeType);
                    isRetrievedAny = true;
                }
            }

            return isRetrievedAny;
        }