0

我有这个代码:

这是一个按钮按下:

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 是这个

4

2 回答 2

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");
于 2013-08-05T00:12:58.797 回答
-3

您没有义务使用 C# 做所有事情。如果从应用程序的角度来看,您将嵌入式网页视为一个黑匣子,您可以使用脚本为其提供内部行为,而 jQuery 使这种事情变得简短、甜蜜并且对于后来者来说非常易读,使用使用功能微不足道但通常很复杂的 UI 行为代码不会污染应用程序逻辑的额外好处。

$(function(){
  $("#idLoginUserName").val(user);
  $("#idLoginPassword").val(password);
  $("#idLoginBtn").click();
});
于 2013-08-05T00:32:55.693 回答