user3201928
user3201928

Reputation: 380

Entering text in website textbox using c#

I am trying to automate fill the textbox of a website in c# and i used:

 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");
    }

The webpage is opening but the text box is not filled with the specified value. I have also tried innertext instead of setAttribute. I am using windows forms.

Upvotes: 0

Views: 4660

Answers (2)

Stefan Wanitzek
Stefan Wanitzek

Reputation: 2124

Eliminate the Process.Start() statement (as suggested by Gian Paolo) because it starts a WebBrowser as an external process.

The problem with your code is that you want to manipulate the value of your element too fast. Wait for the website to be loaded completely:

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");   
}

Please note that using a instance of a WebBrowser is not often the best solution for a problem. It uses a lot of RAM and has some overhead you could avoid.

Upvotes: 0

Gian Paolo
Gian Paolo

Reputation: 4249

You are expecting that your webBrowser will load the page at specified address, but actually your code will start default browser (pointing at "http://www.google.co.in"), while webBrowser.Document will remain null.

try to replace the Process.Start with

webBrowser.Navigate(yourUrl);

Upvotes: 2

Related Questions