繁体   English   中英

C#-使用WebBrowser自动登录到网页-禁用html标签

[英]C# - Automatic Login to a webpage using WebBrowser - disabled html tag

在对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 disable =“ disabled”)。 我不知道为什么要添加此标签(以前不存在),并且如果它与页面的永久Loading ReadyState有任何关系,我们将不胜感激和/或建议!

我有同样的问题。 在一次加载中, DocumentCompleted事件会触发更多事件。 我认为第一个不是真实的。 我认为您应该创建一个BackgroundWorker并在DocumentCompleted事件触发时启动它。 它应该等待几秒钟,然后再执行此工作。 那肯定会工作。

您应该仅启动一次BackgroundWorker

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM