delphi 操作 TWebBrowser 实现自动填表(JQuery脚本与 OleVariant 方法)

版本:DELPHI XE8

操作交通银行信用卡申请表单(2016-03-23),网址如下:

https://creditcardapp.bankcomm.com/applynew/front/apply/new/identity.html

本次操作的难点是“省份”与“城市”这两个<select>标签,当选择了“省份”时,“城市”会自动变更。

但,用普通的方法去改变“省份”的值,不能触发“城市”自动更新事件。

经过尝试,发现用JQUERY脚本可以达到效果。代码如下:

复制代码
var
  BDoc: IHTMLDocument2; //需要 USES MSHTML
  sJs1: string;
  sJs2: string;
begin
  BDoc := WebBrowser1.Document as IHTMLDocument2;

  sJs1 := '$("#mrm_ddlProvince").find("option").eq(14).attr("selected","selected");';
  sJs1 := sJs1 + '$("#mrm_ddlProvince").find("option").eq(14).change();';

  sJs2 := '$("#mrm_ddlCity").find("option").eq(3).attr("selected","selected");';
  sJs2 := sJs2 + '$("#mrm_ddlCity").find("option").eq(3).change();';

  BDoc.parentWindow.execScript(sJs1, 'JavaScript');
  BDoc.parentWindow.execScript(sJs2, 'JavaScript');

end;
复制代码

 

另外,再介绍一种操作网页元素的方法。

复制代码
var
  BDoc: IHTMLDocument2;
  e: OleVariant;
  s: string;
begin
  BDoc := WebBrowser1.Document as IHTMLDocument2;
  e := BDoc.all.item('元素的ID', 0); // 假设此元素是一个 </A>标签
  s := e.href; //这个是强制取 href 这个属性的值,也可以是一个函数,当然你也可以胡乱写一个,编译时是不会出错的。
  // 当 IHTMLELEMENT 没有定义这些元素时,就可以用此“万能”方法。
  ShowMessage(s);
  e.href:='www.xxx.com'; //你也可以给 href 赋值
end;
复制代码

 

TWebBrowser 与 IE 同为一源,如果不追求集成效果,也可以直接去操作IE,只需要事先获取到IE页面的 IHTMLDocumnet2 接口就可以了。

附:delphi 进阶基础技能说明

posted on   晓不得2013  阅读(1781)  评论(0编辑  收藏  举报

编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示