我有这段代码:
这是按下按钮:
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
答案 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();
});