使用c#在网站文本框中输入文本

时间:2015-11-30 09:35:25

标签: c# web automation

我正在尝试使用c#自动填充网站的文本框,并使用:

 private void button1_Click(object sender, EventArgs e)
    {
        System.Windows.Forms.WebBrowser webBrowser = new WebBrowser();
        HtmlDocument document = null;
        document=webBrowser.Document;
        System.Diagnostics.Process.Start("http://www.google.co.in");

        document.GetElementById("lst-ib").SetAttribute("value", "ss");
    }

网页正在打开,但文本框未填充指定的值。我也尝试过innertext而不是setAttribute。我正在使用Windows窗体。

2 个答案:

答案 0 :(得分:2)

您希望webBrowser将页面加载到指定的地址,但实际上您的代码将启动默认浏览器(指向“http://www.google.co.in”),而webBrowser.Document将保留{{1 }}

尝试将null替换为

Process.Start

答案 1 :(得分:0)

消除Process.Start()语句(由Gian Paolo建议),因为它将WebBrowser作为外部进程启动。

您的代码存在的问题是您希望过快地操纵元素的值。等待网站完全加载:

private void button1_Click(object sender, EventArgs e)
{
   System.Windows.Forms.WebBrowser webBrowser = new WebBrowser();

   webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);

   webBrowser.Navigate("http://www.google.co.in");
}


private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
   webBrowser.document.GetElementById("lst-ib").SetAttribute("value", "ss");   
}

请注意,使用WebBrowser实例通常不是解决问题的最佳方法。它使用了大量的RAM,并且可以避免一些开销。