我第一次开始在 C# 中使用 WebBrowser 控件。我正在尝试做一些非常简单的事情:在文本框中写一个文本,然后单击一个按钮进行登录。
WebContest wc_class = new WebContest();
...
wc_class.wbThread1.Navigate("http://www.mysite.com");
while (wc_class.wbThread1.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();
此处登录页面的 ReadyState 完美运行,接下来继续在文本框中写入文本,然后单击按钮
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?
以及如何为页面导航中的所有事件执行此操作?