CefSharp 开发的浏览器ChromiumWebBrowser,选项卡方式,页面中有form提交的数据时不能获取到?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CefSharp 开发的浏览器ChromiumWebBrowser,选项卡方式,页面中有form提交的数据时不能获取到?相关的知识,希望对你有一定的参考价值。

通过ILifeSpanHandler进行拦截,但不知道怎么获取页面中的form提交的数据,前提是在页面中点击连接,此连接调用js进行form提交能解决问题金币不是问题

参考技术A

基于cefsharp的用户浏览器

技术:vc++2015
 

概述

用于需要制作一个浏览器 winfrom 中浏览器的插件有很多种 如:WebBrowser , Web.kit等 但用于比较稳定 功能齐全的还是cefsharp

详细

一、前言

使用cefSharp制作浏览器主要是一些页面无法通过自己的接口去控制,又不可能通过第三方去解决的时候,只能通过自己做的浏览器去分析界面,然后给出响应. 例如: xx的网页客服 目前具有各种缺陷无法发送文件 无法提醒客服新消息等

二、环境搭建

进入NuGet 管理程序包技术图片

添加 CefSharp.WinForms 和CefSharp.Common 使用v69.0.0版本

技术图片

设置配置管理器 解决方案为 X86 cefSharp不予许 Any CPU

技术图片

设置 引用程序.net4.5.2

技术图片

三、程序实现

初始化cefSharp

 public void init() {

            CefSettings _settings = new CefSettings();
            //禁止GPU(图形处理器) 加速
            _settings.CefCommandLineArgs.Add("disable-gpu", "1");

            // Enable WebRTC   支持媒体流    
            _settings.CefCommandLineArgs.Add("enable-media-stream", "1");

            //不要使用代理服务器,总是直接连接。覆盖传递的任何其他代理服务器标志。
            //略微改进了Cef初始化时间,因为它不会尝试解析代理
            _settings.CefCommandLineArgs.Add("no-proxy-server", "1");
            _settings.Locale = "zh-CN";
            //浏览器引擎的语言
            _settings.AcceptLanguageList = "zh-CN,zh;q=0.8";
            //日志文件
            _settings.PersistSessionCookies = true;//保存回话

            Cef.Initialize(_settings);
            
            webBrowser = new ChromiumWebBrowser("https://www.baidu.com/");
            this.panel1.Controls.Add(webBrowser);
            webBrowser.Dock = DockStyle.Fill;     
      }

获取网页html

/// <summary>
        /// 获取网页html
        /// </summary>
        /// <param name="webBrowser"></param>
        /// <returns></returns>
        public static string gethtml(ChromiumWebBrowser webBrowser) {
            string str = "";
            if (webBrowser.IsBrowserInitialized)
            {
                var task = webBrowser.GetSourceAsync();
                task.Wait();
                str = task.Result;
            }
            return str;

        }

分析数据

/// <summary>
        /// 对话框中消息的数量
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static int getmsgCount(string str) {
            return Regex.Matches(str, @"message_content_inner").Count;

        }
 /// <summary>
        /// 获取选择的用户昵称
        /// </summary>
        /// <returns></returns>
        public static string getSelectedNick(string str) {
            int selectedindex = str.IndexOf("card_selected");
           // loglw.PrintLog("",str);
            if (selectedindex > 0)
            {
                string selects = str.Substring(selectedindex, 500);
                int altindex = selects.IndexOf("alt=");
                int overindex = selects.IndexOf(""", altindex + 5);
                return selects.Substring(altindex + 5, overindex - altindex - 5);
            }
            return "";
        }

当把界面的信息获取到之后,就和接口获取数据后的操作一样了

设置定时器

  Timer time;
   public Form1()
        {
            InitializeComponent();
            this.Load += Form1_Load;
            this.Shown += Form1_Shown;
            this.Activated += Form1_Activated;
            this.Deactivate += Form1_Deactivate;
            time = new Timer();
            time.Interval = 2000;
            time.Tick += Time_Tick;
            new ToolTip().SetToolTip(file, "客户文件盒");
            this.FormClosing += Form1_FormClosing;
        }

定时器方法 显示提示信息 提示用户

 private void Time_Tick(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                showmsg();
            }
            if (!act)
            {
                showmsg();
            }
        }

技术图片

四、运行效果图

技术图片

五、项目结构图

技术图片技术图片

注意依赖部分太大,没在这里打包进来。

依赖:上述NuGet 管理程序包引用的 cefSharp

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

以上是关于CefSharp 开发的浏览器ChromiumWebBrowser,选项卡方式,页面中有form提交的数据时不能获取到?的主要内容,如果未能解决你的问题,请参考以下文章

.NET混合开发解决方案24 WebView2对比CefSharp的超强优势

Cefsharp 清除 wpf 中的缓存、cookie 和浏览器数据

CefSharp 开发的浏览器ChromiumWebBrowser,选项卡方式,页面中有form提交的数据时不能获取到?

用Html5/CSS3做Winform,一步一步教你搭建CefSharp开发环境(附JavaScript异步调用C#例子,及全部源代码)上

.Net(C#) CefSharp Chrome 浏览器控件后台执行Iframe中的Js代码的方法

使用cefsharp在winform中嵌套浏览器,解决程序闪退问题,你也可以做一个红芯浏览器^v^