模拟网页上的点击按钮

时间:2014-03-04 22:02:30

标签: c# asp.net

我必须访问一个网页,该网页有一个文本字段和一个“开始”按钮。在循环中,我将值分配给文本字段,当我单击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");

我收到了一个错误:

  

对象引用未设置为对象的实例。

有关如何处理它的任何提示,谢谢

1 个答案:

答案 0 :(得分:1)

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