WebBrowser isn't working
本文关键字:working isn WebBrowser | 更新日期: 2023-09-27 18:26:28
我有这个代码:
这是一个按钮按下:
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就是这个
我猜你试图在导航完成之前访问文档,这对我来说很有效…
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");
您没有义务使用C#做所有事情。如果从应用程序的角度来看,你将嵌入式网页视为一个黑盒,那么你可以使用脚本赋予它内部行为,而jQuery使这类东西变得简短、甜蜜,并且对后来的人来说非常清晰,还有一个额外的好处,那就是用功能琐碎但往往复杂的UI行为代码不会污染应用程序逻辑。
$(function(){
$("#idLoginUserName").val(user);
$("#idLoginPassword").val(password);
$("#idLoginBtn").click();
});