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

Posted

技术标签:

【中文标题】如何单击 webbrowser 控件中的按钮?【英文标题】:How do you click a button in a webbrowser control? 【发布时间】:2012-07-01 13:44:27 【问题描述】:

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

【问题讨论】:

【参考方案1】:
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";

【讨论】:

shdocvw和mshtml也可以来用!! 抱歉,webBrowser 是什么? @KyleKhalaf 我认为他的意思是“webBrowser1”【参考方案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");


    

【讨论】:

【参考方案3】:

除了使用InvokeMember 等,如果您的网页在被IDClass 调用时出现响应问题,您可以尝试使用TABENTER 中的SendKeys 类。网。我已经为网页编写了很多脚本,并且发现我必须将两者结合使用(尽管SendKeys 比@AleWin 的答案中的方法要混乱得多)。

Here is the link to the SendKeys class.

【讨论】:

以上是关于如何单击 webbrowser 控件中的按钮?的主要内容,如果未能解决你的问题,请参考以下文章

webbrowser控件如何实现提交的时候触发Winform窗体上button的单击事件

如何将帐户信息放入 Facebook 登录表单并单击 Web 浏览器控件中的提交按钮?

C# WebBrowser 控件拦截从 PHP 脚本在新窗口中下载

WebBrowser 控件 - 使用 JavaScript 按钮调用脚本问题

delphi中WebBrowser控件怎么模拟点击网页框架中的按钮button?

VB模拟鼠标点击webbrowser控件网页