1
我開始在C#中第一次使用WebBrowser控件。我正在嘗試做一些非常簡單的事情:在文本框中編寫文本,然後單擊登錄按鈕。使用DocumentComplete事件C#
WebContest wc_class = new WebContest();
...
wc_class.wbThread1.Navigate("http://www.mysite.com");
while (wc_class.wbThread1.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();
這裏的readyState的登錄頁面worck完美,接下來繼續寫在一個文本框文本,然後點擊一個按鈕
wc_class.wbThread1.Document.GetElementById("field_email").SetAttribute("value", tbLogin.Text);
wc_class.wbThread1.Document.GetElementById("field_password").SetAttribute("value", tbPassword.Text);
wc_class.wbThread1.Document.GetElementById("field_remember").InvokeMember("click");
wc_class.wbThread1.Document.GetElementById("hook_FormButton_button_go").InvokeMember("click");
而這一次,登錄後,我需要提取鏈接從頁面。 待辦事項出頭這樣的:
...
foreach (HtmlElement link in wc_class.wbThread1.Document.Links)
{
string href = link.GetAttribute("HREF");
string fileName = "links.txt";
using (FileStream fs = new FileStream(fileName, FileMode.Append, FileAccess.Write))
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine(href);
}
而且麻煩的是在期待DocumentComplete事件。登錄後的頁面不會等待加載。爲什麼?點擊登錄按鈕後如何檢查ReadyState頁面?
如何爲頁面導航中的所有事件做到這一點?
但是,如果應用程序是爲羣衆寫的,會發生什麼? 我們都有不同的互聯網,您的方法可能不適合在某些情況下。 – Johnny
@Johnny爲什麼不呢?正如我所說,計時器將觸發每一個讓我們說2秒,直到WebBrowserReadyState ==完成 – VladL
okey,你能爲這個問題做一個完整的例子嗎? 我測試一些像這樣: this.wb.wbThread1.DocumentCompleted + = new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(this.wbThread1_DocumentCompleted); 它不能正常播種。 – Johnny