0

在对 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")。我不知道为什么要添加这个标签(以前没有),如果它与页面的永久加载就绪状态有任何关系......将不胜感激见解和/或建议!

4

1 回答 1

0

我有同样的问题。该DocumentCompleted事件在一次加载中触发的次数不止一次。我认为第一个不是真实的。我认为您应该创建一个并在事件触发BackgroundWorker时启动它。DocumentCompleted它应该等待几秒钟才能完成这项工作。那肯定会奏效。

你应该BackgroundWorker只开始一次。

于 2013-05-16T10:49:57.310 回答