如何单击webbrowser控件中的按钮?

时间:2012-06-30 05:33:18

标签: c# button browser

例如,使用代码而没有用户输入,我如何让我的程序点击谷歌上的“搜索”按钮(假设我已填写搜索框并在google.com上)

3 个答案:

答案 0 :(得分:42)

webBrowser1.Navigate("http://www.google.com");

如果您有ID,请使用

webBrowser1.Document.GetElementById("id").InvokeMember("click");

如果您TagName使用此

 webBrowser1.Navigate("http://www.google.com");

在Web浏览器DocumentCompleted事件

HtmlElement textElement = webBrowser1.Document.All.GetElementsByName("q")[0];
textElement.SetAttribute("value", "your text to search");
HtmlElement btnElement = webBrowser1.Document.All.GetElementsByName("btnG")[0];
btnElement.InvokeMember("click");

如果您的名字为Class,请使用:

HtmlElementCollection classButton = webBrowser1.Document.All;
foreach (HtmlElement element in classButton) 
{
    if (element.GetAttribute("className") == "button")
    {
        element.InvokeMember("click");
    }
}

要在TextBox中添加文字以搜索google.com,请使用:

 webBrowser1.Document.GetElementById("gs_tti0").InnerText = "hello world";

答案 1 :(得分:2)

请尝试以下代码:

public WebBrowser webBrowser1 = new WebBrowser();
    private void WebForm_Load(object sender, EventArgs e)
        {
            try
            {
                webBrowser1.Height = 1000;
                webBrowser1.Width = 1000;
                this.Controls.Add(webBrowser1);
                webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted);
                this.webBrowser1.Navigate("www.google.com.au");
            }
            catch
            { }

在c#表单中记下以下函数:

public void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        var webBrowser = sender as WebBrowser;
        webBrowser.DocumentCompleted -= WebBrowser_DocumentCompleted;

        HtmlElement textElement = webBrowser.Document.All.GetElementsByName("q")[0];
        textElement.SetAttribute("value", "mlm company");
        HtmlElement btnElement = webBrowser.Document.All.GetElementsByName("btnG")[0];
        btnElement.InvokeMember("click");


    }

答案 2 :(得分:0)

除了使用InvokeMember和其他人之外,如果您的网页在IDClass调用时出现问题,您可以尝试使用{TAB}& {ENTER}使用.NET中的SendKeys类。我已经为网页编写了很多脚本,并且发现我必须使用两者的组合(即使SendKeys比@ AleWin的答案中的方法更麻烦)。

Here is the link to the SendKeys class.