在对 WebBrowser DocumentCompleted 问题进行一些研究之后,我将登录尝试插入到 DocumentCompleted 事件处理程序中。
这是我的代码:
public void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
wb.Navigate("fooPage");
var browser = (WebBrowser)sender;
HtmlElement email = CookieReader.GetElement("email", browser);
HtmlElement password = CookieReader.GetElement("pass", browser);
email.SetAttribute("email", "foo@something.com");
password.SetAttribute("pass", "foo");
HtmlElement loginElement = CookieReader.GetElement("fooLog", browser);
loginElement.InvokeMember("click"); //wb_DocumentCompleted Method Continues...
我没能登录(仔细检查我的登录按钮是否正确)。似乎问题出在浏览器对象的 ReadyState 属性上。它始终在加载,而 IsBusy 属性始终为 False。此外,页面应该完成加载,因为 DocumentCompleted 事件已触发。任何想法这怎么可能?
此外,在调试时,InvokeMember 方法会更改 html INPUT 元素并出现禁用标记(disabled=\"\" - 如果我没记错的话,它是 HTML5 disabled="disabled")。我不知道为什么要添加这个标签(以前没有),如果它与页面的永久加载就绪状态有任何关系......将不胜感激见解和/或建议!