Freesnöw
Freesnöw

Reputation: 32173

Perform a click on a Webbrowser control

Does anybody know a good way to perform a click on a control inside of a webbrowser? Preferably from ID?

Thanks, ALL suggestions are appreciated.

Upvotes: 1

Views: 3220

Answers (3)

Chris Wheelous
Chris Wheelous

Reputation: 75

This isn't really for an ID but you can do the same thing with it by using the value button.

Dim allelements As HtmlElementCollection = WebBrowser1.Document.All

For Each webpageelement As HtmlElement In allelements

If webpageelement.GetAttribute("value") = "Log In" Then

webpageelement.InvokeMember("click")

End If

Next

Upvotes: 0

Hans Passant
Hans Passant

Reputation: 942197

Use the HtmlElement.InvokeMember("click") method. Here's a sample form that uses the Google "I feel lucky" button:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        webBrowser1.Url = new Uri("http://google.com");
        webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
    }

    void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
        if (webBrowser1.Url.Host.EndsWith("google.com")) {
            HtmlDocument doc = webBrowser1.Document;
            HtmlElement ask = doc.All["q"];
            HtmlElement lucky = doc.All["btnI"];
            ask.InnerText = "stackoverflow";
            lucky.InvokeMember("click");
        }
    }
}

Upvotes: 3

Daniel A. White
Daniel A. White

Reputation: 191037

You can't directly call click on something in the control. However, you can register some JavaScript into the control and perform the click that way.

See How to inject Javascript in WebBrowser control? for details.

Upvotes: 0

Related Questions