private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("http://passport.58.com/reg/?city=zz");
HtmlDocument doc = this.webBrowser1.Document;
for (int k = 0; k < 10; k++)
{
doc = this.webBrowser1.Document;
}
foreach (HtmlElement em in doc.All)
{
string str = em.Name;
if (str == "nickName")//用户名
{ em.SetAttribute("value", "fsdd1234nm");
}
else if (str == "password")//密码
{ em.SetAttribute("value", "fsdd1234");
}
else if (str == "cpassword")
{
em.SetAttribute("value", "fsdd1234");
}
else if (str == "txtemail")
{
em.SetAttribute("value", "[email protected]");
}
HtmlElementCollection hec = doc.GetElementsByTagName("input");
foreach (HtmlElement he in hec)
{
if (he.GetAttribute("type") == "submit" || he.GetAttribute("type") == "image")
{
he.InvokeMember("click");
}
}
}
{
webBrowser1.Navigate("http://passport.58.com/reg/?city=zz");
HtmlDocument doc = this.webBrowser1.Document;
for (int k = 0; k < 10; k++)
{
doc = this.webBrowser1.Document;
}
foreach (HtmlElement em in doc.All)
{
string str = em.Name;
if (str == "nickName")//用户名
{ em.SetAttribute("value", "fsdd1234nm");
}
else if (str == "password")//密码
{ em.SetAttribute("value", "fsdd1234");
}
else if (str == "cpassword")
{
em.SetAttribute("value", "fsdd1234");
}
else if (str == "txtemail")
{
em.SetAttribute("value", "[email protected]");
}
HtmlElementCollection hec = doc.GetElementsByTagName("input");
foreach (HtmlElement he in hec)
{
if (he.GetAttribute("type") == "submit" || he.GetAttribute("type") == "image")
{
he.InvokeMember("click");
}
}
}
HtmlDocument doc = this.webBrowser1.Document;这样是null的.
因为你输入命令后马上下一句就要求得到里面的结果.
webBrowser1里面只有一个网址..Document还没有加载完网页呢.
应该给个加载网页的时间
什么什么?我随便从最后胡乱挑出一条代码来,就是因为认为可能是前边的代码有问题,以免你把握的举例当作什么答案了。你动手调试了吗?你怎么知道doc为null,我可没有说过它是null啊,你别赖在我的举例上啊,你要自己动手调试而不要等着别人给你一堆胡乱的猜测啊。
然后,我知道你是举例,没有说你是瞎猜的意思;我说的doc 为null应该就是问题所在,而原因应该是webBrowser1没有加载成功。根据大家的提示,用webBrowser1_DocumentCompleted能解决举例的问题。但没有解决我整体程序的难题。不知道有没有其它的方法来判断是否加载成功...