C# WebBrowser 组件常用操作与自动化示例

阿麦
阿麦
发布时间:2026-10-13 | 2人浏览过
原创

在C# Windows Forms 开发中,WebBrowser 控件常用于内嵌网页或进行简单的网页交互。本文总结了该控件的几个核心操作场景,包括判断网络连接、自动填写表单模拟登录、模拟用户点击链接以及调用页面内的 JavaScript 函数。

判断当前网络连接状态

在进行网页抓取或自动操作前,通常需要确认设备是否处于在线状态。可以通过调用 InternetGetConnectedState 外部接口来实现这一检查:

private bool IsConnectedToInternet()
{
    int Desc;
    return internet.InternetGetConnectedState(out Desc, 0);
}

设置默认导航页面

初始化时,可以让 WebBrowser 直接跳转到指定 URL。例如:

webBrowser1.Navigate(new Uri("http://www.yoursiteweb.com/copy.aspx"));

模拟登录流程

实现自动登录的核心思路是获取页面上的表单元素,填入账号密码,并触发提交按钮。以下是完整步骤:

第1步:填入账号与密码

通过元素 ID 定位输入框,并设置其文本内容:

webBrowser1.Document.GetElementById("id").InnerText = txtuser.Text.ToString().Trim(); // 填入用户名
webBrowser1.Document.GetElementById("passwd").InnerText = txtpwd.Text.ToString().Trim(); // 填入密码

第2步:定位并提交登录表单

找到对应的 Form 容器(假设 Form name 为 "frmLogin"),调用其 InvokeMember("submit") 方法触发提交动作:

HtmlElement formLogin = webBrowser1.Document.Forms["frmLogin"];
formLogin.InvokeMember("submit");

第3步:等待页面加载与后续操作

提交后需短暂等待以便 Session 建立和页面跳转完成,随后可执行登录后的动作(如点击特定链接)。注意:即使看似直接跳转,保持会话连续性的最佳方式仍是模拟真实的 UI 交互:

Thread.Sleep(5000); // 等待服务器响应及页面重定向
herfclick("http://www.yoursiteweb.com/upload.aspx"); // 登录后首跳页面
herfclick("http://www.yoursiteweb.com/copy.aspx"); // 后续目标页面

模拟点击页面中的链接

若需按条件触发特定的超链接(如根据 URL 匹配),可遍历文档中的所有 A 标签:

private void herfclick(string url)
{
    for (int i = 0; i < webBrowser1.Document.All.Count; i++)
    {
        // 检查标签是否为 A 且 href 属性匹配目标 URL
        if (webBrowser1.Document.All[i].TagName == "A" && 
            webBrowser1.Document.All[i].GetAttribute("href").ToString().Trim() == url)
        {
            webBrowser1.Document.All[i].InvokeMember("click"); // 引发 Click 事件
            break;
        }
    }
}

调用网页中的 JavaScript 函数

通过 InvokeScript 方法,C# 代码可以直接执行页面上已定义的 JS 函数,并可传递参数:

private void callJsMethod(string jsfun, string jsParameter)
{
    HtmlDocument doc = webBrowser1.Document;
    // 调用名为 jsfun 的函数,传入参数 jsParameter
    doc.InvokeScript(jsfun, new object[] { jsParameter });
}

填充复杂表单数据

对于包含多种控件的表单(如单选按钮、文本域),可按以下步骤操作:

private void filldate(string txt)
{
    // 1. 获取指定名称的表单对象
    HtmlElement frmWord = webBrowser1.Document.Forms["frmWord"];
    
    // 2. 获取所有 TEXTAREA 元素集合
    HtmlElementCollection txtarea = frmWord.GetElementsByTagName("TEXTAREA");
    
    // 3. 获取所有 INPUT 元素集合
    HtmlElementCollection radio = frmWord.GetElementsByTagName("INPUT");
    
    // 4. 模拟点击第3个单选框(索引为2)
    radio[2].InvokeMember("click"); 
    
    // 5. 将文本填入第一个文本域
    txtarea[0].InnerText = txt.ToString();
}
以上就是 C# WebBrowser 组件实现自动登录、模拟点击与执行 JS 的详细内容,更多关于 C# 网页自动化操作的资料请关注本站其它相关文章!
相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表