我用webbrowser模拟登录,在登录前用webbrowser的ocumentCompleted事件( 在 WebBrowser 控件完成加载文档时发生)来提交登录信息,成功了,之后服务器返回的是另一个新的页面,这时候DocumentCompleted事件就找不到新页面的html元素上,就是新页面的文档还没有加载完,webbrowser也有一另一个事件是Navigated(在WebBrowser 控件导航到新文档并开始加载该文档时发生),但它还是在加载时发生,还是不能找到新文档里面的元素
webbrowser的ocumentCompleted事件
private void myWebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
HtmlElement btnSubmit = myWebBrowser.Document.GetElementById("Button1");
HtmlElement tbUserid = myWebBrowser.Document.GetElementById("TxtUserName");
HtmlElement tbPasswd = myWebBrowser.Document.GetElementById("TxtUserPassword");
if (tbUserid == null || tbPasswd == null || btnSubmit == null)
return;
tbUserid.SetAttribute("value", "chenzehe");
tbPasswd.SetAttribute("value", "chenzehe");
HtmlDocument doc = myWebBrowser.Document;
btnSubmit.InvokeMember("click");//提交后页面导航到新的页面
//在这里用上面的方法得不到新页面的全部元素
}
webbrowser的Navigated事件
private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
//在这里也只能得到新页面的一些元素,只是body之前的
}
有没有好什么好的方法得到新页面的元素?
自己弄明白了,当重新加载新页面时就再次执行ocumentCompleted事件