Kaan
Kaan

Reputation: 169

Trying to log in to a website through a C# program

I'm new to C# so I looked for this topic in other questions but they weren't for me. What I am trying to do is I currently try to login to my school's servers using a c# program(Which I'm trying to implement). What I'm trying to do is I know the code of the page, so I am using web browser of c# to navigate then I just want to write name and password to the input boxes and this is where I stuck. Can you please give me any advices?

If you want to look at page: https://suis.sabanciuniv.edu/prod/twbkwbis.P_SabanciLogin

Thanks for your advices.

Here how I used the code(Edit: Added eventhandler but this is my first time using so it promts me "object reference not set to a instance of an object"):

            private void buttonGo_Click(object sender, EventArgs e)
    {
        try
        {
            string input = "https://suis.sabanciuniv.edu/prod/twbkwbis.P_SabanciLogin";


            webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted);

            webBrowser1.Navigate(input);
            HtmlDocument doc = webBrowser1.Document;
            HtmlElement userName = doc.GetElementById("UserID");
            HtmlElement pass = doc.GetElementById("PIN");
            HtmlElement submit = doc.GetElementById("Login");

            userName.SetAttribute("value", textID.Text);
            pass.SetAttribute("value", textPASS.Text);

            submit.InvokeMember("Click");

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
    public void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        var webBrowser = sender as WebBrowser;
        webBrowser.DocumentCompleted -= WebBrowser_DocumentCompleted;
        MessageBox.Show(webBrowser.Url.ToString());
    } 
}

}

Finally I solved problem I cheated a little but managed to solve. Here is the working code:

private void buttonGo_Click(object sender, EventArgs e)
        {
            try
            {
                string input = "https://suis.sabanciuniv.edu/prod/twbkwbis.P_SabanciLogin";


                webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted);

                webBrowser1.Navigate(input);

                HtmlDocument doc = webBrowser1.Document;
                //HtmlElement userName = doc.GetElementById("UserID"); These not worked because ID of the elements were hidden so they are here to show which of these did not work.
                //HtmlElement pass = doc.GetElementById("password");
                HtmlElement submit = webBrowser1.Document.Forms[0].Document.All["PIN"].Parent.Parent.Parent.NextSibling.FirstChild;

                //userName.SetAttribute("value", textID.Text);
                //pass.SetAttribute("value", textPASS.Text);




                webBrowser1.Document.Forms[0].All["UserID"].SetAttribute("value", textID.Text);
                webBrowser1.Document.Forms[0].All["PIN"].FirstChild.SetAttribute("value", textPASS.Text);
                submit.InvokeMember("Click");

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        public void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            var webBrowser = sender as WebBrowser;
            webBrowser.DocumentCompleted -= WebBrowser_DocumentCompleted;
            MessageBox.Show(webBrowser.Url.ToString());
        } 

Upvotes: 2

Views: 3952

Answers (1)

DJ Olker
DJ Olker

Reputation: 60

You need to find the input boxes of the username and password fields as ID's or nodes first. Then assign them as such:

HtmlDocument doc = webBrowser1.Document;
HtmlElement email = doc.GetElementById("email");
HtmlElement pass = doc.GetElementById("pass");
HtmlElement submit = doc.GetElementById("LoginButton");

email.SetAttribute("value", "InsertYourEmailHere");
//Same for password

submit.InvokeMember("Click");

Upvotes: 1

Related Questions