string RunControl(List <HControl> controls, string data) { string status = string.Empty; foreach (HControl ctr in controls) { if (MyWatiN.IsExist(ie, ctr)) { status = MyWatiN.FillData(ie, ctr, data); break; } } return(status); }
public void Run() { if (listforum == null) { return; } string error = ""; while (listforum.Count != 0) { error = ""; try { WebLink forum = new WebLink(); lock (listforum) { if (listforum.Count > 0) { forum = listforum[0]; listforum.RemoveAt(0); } } if (string.IsNullOrEmpty(forum.UrlPost)) { break; } // Start WatiN Open(); // Start Forum error = MyWatiN.Goto(forum.UrlPost, ie); if (!string.IsNullOrEmpty(error)) { AddStatus(forum.UrlPost, RunStatus.ErrTimeOut, error); Close(); continue; } // === Step 1 === // //NextStep(); // Control User name error = ""; if ((error = RunControl(multiforum.UserName, forum.UserName)) != string.Empty) { AddStatus(forum.UrlPost, RunStatus.ErrUserName, error); Close(); continue; } // Control Pass word error = ""; if ((error = RunControl(multiforum.PassWord, forum.Password)) != string.Empty) { AddStatus(forum.UrlPost, RunStatus.ErrPassword, error); Close(); continue; } // Control Login error = ""; if ((error = RunControl(multiforum.Login)) != string.Empty) { AddStatus(forum.UrlPost, RunStatus.ErrLogin, error); Close(); continue; } error = MyWatiN.Goto(forum.UrlPost, ie); if (!string.IsNullOrEmpty(error)) { AddStatus(forum.UrlPost, RunStatus.ErrTimeOut, error); Close(); continue; } //Wait(10000); // === Step 2 === // //NextStep(); // Filter topic bool isTopic = false; bool isNewTopic = false; string href = ""; error = ""; string tmp = ""; HControl link = new HControl(); link.Control = ControlType.AHref; link.Attribute = AttributeType.Text; for (int j = 0; j < multiforum.NewThread.Count; j++) { href = GetLink(ie.Links, multiforum.NewThread[j].Value); //forum.NewThread.Field = FilterUrl.AbsoluteUrl(ie.Url, href); if (!string.IsNullOrEmpty(href)) { // New Thread multiforum.NewThread[j].Value = href; error = MyWatiN.FillData(ie, multiforum.NewThread[j]); //Wait(3000); isNewTopic = true; isTopic = true; break; } } // === Step 3 === // //NextStep(); if (!isNewTopic) { AddStatus(forum.UrlPost, RunStatus.ErrNewThread, error); Close(); continue; } // Fill entry // Control Subject error = ""; if ((error = RunControl(multiforum.Subject, entry.Subject)) != string.Empty) { AddStatus(forum.UrlPost, RunStatus.ErrSubject, error); Close(); continue; } // Control Mode error = ""; bool b = false; for (int i = 0; i < multiforum.Mode.Count; i++) { if (MyWatiN.IsExist(ie, multiforum.Mode[i])) { for (int j = 0; j < multiforum.Message.Count; j++) { string style = ie.TextField(MyWatiN.GetControl(ie, multiforum.Message[j])).GetAttributeValue("style"); string display = Filter.GetTextByRegex(FilterPattern.Display, style, true, 0, 1); if (!string.IsNullOrEmpty(display)) { MyWatiN.FillData(ie, multiforum.Mode[i]); b = true; break; } } if (b == true) { break; } } } // Control Message error = ""; if ((error = RunControl(multiforum.Message, entry.Message)) != string.Empty) { AddStatus(forum.UrlPost, RunStatus.ErrMessage, error); Close(); continue; } // === Step 4 === // //NextStep(); // Control Tag RunControl(multiforum.Tags, entry.Tags); AddStatus(forum.UrlPost, RunStatus.Success); // === Step 5 === // error = ""; if ((error = RunControl(multiforum.Submit)) != string.Empty) { AddStatus(forum.UrlPost, RunStatus.ErrSubmit, error); Close(); continue; } // NextStep(); // End WatiN Close(); Wait(6000); } catch (Exception ex) { if (ie != null) { AddStatus("", RunStatus.Error, ex.Message); Close(); } } } }