Delphi 10.4.1 EdgeBrowser 模拟操作网页方法

本文介绍了如何在Delphi 10.4.1中使用TEdgeBrowser控件替代TWebBrowser进行网页模拟操作。由于IE内核即将停止更新,作者转向了微软的Edge浏览器。TEdgeBrowser不直接支持IHTMLDocument2,但可以通过OnExecuteScript事件回调执行JavaScript,并获取返回值。文中详细阐述了如何设置EdgeBrowser、执行JavaScript脚本以及处理回调数据的方法。
摘要由CSDN通过智能技术生成

Delphi 10.4.1 EdgeBrowser 模拟操作网页方法

以往一直用TWebBrowser 或者 C++ Builder 中的TCcpWebBrowser来写网页模拟操作
这两个控件可以使用WebBrowser.OleObject.document、WebBrowser.Document As IHTMLDocument2来实现大部分的操作
发现这两者都是依赖于IE内核,虽然可以设定IE 11内核,但是今年微软公布11月底停止更新了
所以可以考虑使用微软推出的Edge浏览器

进入正题:

Delphi 10.4.1 新增的TEdgeBrowser控件
研究了一下发现该控件似乎不再支持像TWebBrowser那样使用IHTMLDocument2方法了
Google一下发现几乎没有资料可寻,在GW某个论坛看到说被其他方式代理了,翻了一下Edge类,在类中有这么一个方法:

    /// <summary>
    ///   Execute JavaScript code from the javascript parameter in the current top level document rendered in the
    ///   WebView, even if ScriptEnabled is False
    /// </summary>
    procedure ExecuteScript(const JavaScript: string);

对应回调事件

  当 ExecuteScript 执行完成后回调结果给 OnExecuteScript 
  /// <summary>
  ///   Event handler type for the OnExecuteScript event
  /// </summary>
  TExecuteScriptEvent = procedure (Sender: TCustomEdgeBrowser; AResult: HResult; const AResultObjectAsJson: string) of object;

OnExecuteScript 包含两个参数,AResult 返回状态,AResultObjectAsJson 返回数据
经过测试发现,AResultObjectAsJson 默认回调过来的数据如果不是Json而是字符串,那么该字符串会被加上双引号,如 “button click success”,AResultObjectAsJson 的返回值经过测试,好像只返回最后一次被赋值的变量或被修改过的元素值

方法:
下载WebView2的dll支持库放入程序目录下
链接:https://pan.baidu.com/s/1ASnrkr8v893egwSoCVNcjg
提取码:igjt

下载MicrosoftEdgeDev浏览器,安装好桌面会出现Microsoft Edge Dev图标
链接:https://pan.baidu.com/s/1OrGtyYpNdM1ph5qNyHFU1Q
提取码:acap

在这里插入图片描述


以上工作做好以后,即可进行开发了

1.界面拖入EdgeBrowser控件
2.在控件事件中双击OnExecuteScript创建一个回调事件
3. EdgeBrowser1.ExecuteScript(‘你的JavaScript脚本’);

假定我们打开的页面有这样一个按钮:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值