2014-03-04 254 views
0

我必须访问一个网页,其中有一个文本框和一个“开始”按钮。在循环中,我给文本字段赋值,当我点击Go时,它应该带我到另一个网页。 来源看起来像这样的文本字段。模拟网页上的点击按钮

<td> 
    <input name="ctl00$cphMyMasterCentral$ucSearch$txtNumber" type="text" value="40010" id="ctl00_cphMyMasterCentral_ucSearch_txtNumber" disabled="disabled" style="width:200px;" /> 
</td> 

的Go按钮

<a id="ctl00_cphMyMasterCentral_ucSearch_lbtnSearch" class="submit" href='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$cphMyMasterCentral$ucSearch$lbtnSearch", "", true, "", "", false, true))'>Go</a> 

这是我在C#代码

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(mainURL); 
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-US"); 
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; MS-RTC EA 2; MS-RTC LM 8; InfoPath.3)"; 
request.Timeout = 100000; 
WebClient wc = new WebClient(); 
WebBrowser b =new WebBrowser(); 
string html = wc.DownloadString(mainURL); 
b.Document.GetElementById("ctl00_cphMyMasterCentral_ucSearch_txtNumber").InnerText = "100"; 
b.Document.GetElementById("ctl00_cphMyMasterCentral_ucSearch_lbtnSearch").InvokeMember("click"); 

我得到了一个错误:

Object reference not set to an instance of an object.

如何处理任何提示它,谢谢

+1

您尚未在WebBrowser的任何位置导航。如果您尝试使用Webbrowser b导航到您想要的页面,您可能会有更多的运气。你也可能想看看Watin。它是.Net的网页浏览添加,这使得你正在努力做的更容易。 – daniellepelley

回答

1

您使用WebClient来抓取HTML,但WebBrowser从来不知道它,所以当您告诉他通过ID获取元素时,Webbrowser不会喜欢它,不是吗?要做到这一点,你根本不需要webclient类。只需查看WebBrowser.Navigate,就可以找到所需的东西