WebBrowser无法正常工作

时间:2013-08-05 00:04:22

标签: c#

我有这段代码:

这是按下按钮:

int part = 0;
web.Navigate(loginURL.Text + "/auth/login");
wait.Enabled = true;

这是一个计时器“等待”,间隔设置为6000:

if (part == 0)
            {
                part = 2;
                web.Document.GetElementById("idLoginUserName").SetAttribute("value", user);
                web.Document.GetElementById("idLoginPassword").SetAttribute("value", pass);
                web.Document.GetElementById("idLoginBtn").InvokeMember("click");
            }
            if (part == 2)
            {
                web.Navigate(fullURL.Text);
                part = 3;
            }
            if (part == 3)
            {
                web.Document.GetElementById("title").SetAttribute("value", title.Text);
            }
            if (part == 4)
            {
                web.Navigate("www.vbulletin.com/forum/auth/logout");
                part = 5;
            }
            if (part == 5)
            {
                part = 0;
                web.Navigate(loginURL.Text + "/auth/login");
            }

按钮按下工作正常,但是:

 web.Document.GetElementById("idLoginUserName").SetAttribute("value", user);
                    web.Document.GetElementById("idLoginPassword").SetAttribute("value", pass);
                    web.Document.GetElementById("idLoginBtn").InvokeMember("click");

什么都不做。文本没有改变,按钮没有被点击等等。我已经检查并仔细检查了ID,这是正确的。

loginURL.Text为this

2 个答案:

答案 0 :(得分:4)

我猜您在导航完成之前尝试访问文档,这对我有用...

web.DocumentCompleted += (s, e) =>
{
    web.Document.GetElementById("idLoginUserName").SetAttribute("value", user);
    web.Document.GetElementById("idLoginPassword").SetAttribute("value", pass);
    web.Document.GetElementById("idLoginBtn").InvokeMember("click");
};
web.Navigate("http://www.vbulletin.com/forum/auth/login");

答案 1 :(得分:-3)

您没有义务使用C#做所有事情。如果您将嵌入式网页视为应用程序视角的黑盒子,您可以使用脚本为其提供内部行为,而jQuery使这类事物变得简短,甜蜜,并且对于那些追随的人来说非常清晰。通过功能上微不足道但通常很复杂的UI行为代码来增加不污染应用程序逻辑的好处。

$(function(){
  $("#idLoginUserName").val(user);
  $("#idLoginPassword").val(password);
  $("#idLoginBtn").click();
});