delphi WebBrowser的使用方法详解(四)-webbrowser轻松实现自动填表
webbrowser轻松实现自动填表
步骤如下:
第一步:获取网页 调用Webbrowser 的Navigate系列函数。等待网页装载完成,得到document对象。 在调用 webBrowser.Document 之前,请确保 Webbrowser 网页装载完成,可以通过Webbrowser的DocumentCompleted事件进行监视。 小技巧 先指定一个变量
步骤如下:
第一步:获取网页
调用Webbrowser 的Navigate系列函数。等待网页装载完成,得到document对象。
在调用 webBrowser.Document 之前,请确保 Webbrowser 网页装载完成,可以通过Webbrowser的DocumentCompleted事件进行监视。
小技巧
先指定一个变量:
IsCompleted
在调用Webbrowser 的Navigate,Refresh系列函数之前,将IsCompleted设为false。
在DocumentCompleted事件中,如果 ReadyState 为 WebBrowserReadyState.Complete(值为4),则设IsCompleted为true.
调用webBrowser.Document之前对IsCompleted进行判断。如果不为true,则延时循环等待,直到IsCompleted被设为true.
第二步:设置网页元素数据
确保得到document对象之后,通过 GetElementById 获取网页元素,如:
HtmlElement user = webBrowser.Document.GetElementById("user");
HtmlElement password = webBrowser.Document.GetElementById("password");
设置网页元素值:
user.InnerText = "myname";
password.InnerText = "123456";
小技巧
作用 SetAttribute 设置下拉框,复选框,多选框数据
下拉框:
secret.SetAttribute("value", "question1");
复选框
rememberme.SetAttribute("Checked", "True");
多选框
cookietime.SetAttribute("checked", "checked");
当然,在SetAttribute 之前,也可以用GetAttribute取相关的属性先进行判断,再根椐需要进行设置。
第三步:提交网页数据
先取提交的按钮对象。
HtmlElement submit = webBrowser.Document.GetElementById("submit");
进行提交
submit.InvokeMember("click");
就是怎么简单。整个过程也就是 http get和post的过程。
当然也可以用低级点的WebRequest,还有更低级的socket来做,不过,现在的众多页面都有这样,那样的变形验证码,如果你和我一样,搞不定验证码识别,又贪图快点完成任务,上面的办法绝对是又快,又好。
webbrowser通过属性(tag)遍历查找元素
function GetDocLinkByHref(doc : IHTMLDocument2;str_url:string):IHTMLAnchorElement;
var
i : Integer;
label_iDispatch : iDispatch;
label_element : IHTMLAnchorElement;
begin
Result := nil;
doc := webbrowser1.document as Ihtmldocument2;
if not Assigned(doc) then
Exit;
for i:=0 to doc.links.length-1 do
begin
label_iDispatch := doc.links.item(i,0);
label_element := doc.links.item(I,0) as IHTMLAnchorElement;
if (AnsiPos(str_url,(doc.links.item(I,0) as IHTMLElement).getAttribute('tag',0))>0)
then
begin
Result := label_element;
Break;
end;
end;
end;
delphi WebBrowser的使用方法详解(四)-webbrowser轻松实现自动填表的更多相关文章
- delphi WebBrowser的使用方法详解(五)-难点释疑
网页代码:<SELECT id=fy onchange=TouchRefresh(1) name=fy> <OPTION selected value=15>每頁顯示15筆&l ...
- delphi WebBrowser的使用方法详解(六)
通篇引用mshtml; 一.webbrowser获取滚动条的位置 function GetScrollPositionX(FWB:TEmbeddedWB):Integer; //水平滚动条位置 ...
- delphi WebBrowser的使用方法详解(三)
WebBrowser 操作记要 WebBrowser1.GoHome; //到浏览器默认主页 WebBrowser1.Refresh; //刷新 WebBrowser1.GoBack; //后退 ...
- Delphi中TStringList类常用属性方法详解
TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 先把要讨论的几个属性列出来: 1.CommaText 2.Delim ...
- session的使用方法详解
session的使用方法详解 Session是什么呢?简单来说就是服务器给客户端的一个编号.当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站.当每个用户首次与这台WWW服务器 ...
- ecshop后台增加|添加商店设置选项和使用方法详解
有时候我们想在Ecshop后台做个设置.radio.checkbox 等等来控制页面的显示,看看Ecshop的设计,用到了shop_config这个商店设置功能 Ecshop后台增加|添加商店设置选项 ...
- CURL使用方法详解
php采集神器CURL使用方法详解 作者:佚名 更新时间:2016-10-21 对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程 ...
- JAVA 注解的几大作用及使用方法详解
JAVA 注解的几大作用及使用方法详解 (2013-01-22 15:13:04) 转载▼ 标签: java 注解 杂谈 分类: Java java 注解,从名字上看是注释,解释.但功能却不仅仅是注释 ...
- Js apply 方法 详解
Js apply方法详解 我在一开始看到JavaScript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这 ...
随机推荐
- fopen & fcolse & fseek & ftell & fstat 文件操作函数测试
1.文件大小查询file_size.c 方法一:fseek + ftell: 方法二:ftell #include <stdio.h> #include <fcntl.h> # ...
- WebGL编程指南案例解析之加载纹理(贴图)
var vShader = ` attribute vec4 a_Position; attribute vec2 a_TexCoord; varying vec2 v_TexCoord; void ...
- Linux运维学习笔记-iptables知识总结
- 转载: Linux 操作系统挂起、休眠、关机相关命令
最近每天的工作都难以在当天结束,而本人又不是那种善于熬夜的人,因此就需要将电脑中的工作文件全部保存,以往都是将所有工作文件保存关机,但是最近发现Linux系统有一个好神奇的命令: 休眠: sudo p ...
- tiny4412 UART for C printf Demo
/************************************************************************** * tiny4412 UART for C pr ...
- Tomcat问题:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined ,At least one of these environment variable is needed to run this program
一眼就能看出来是jdk的环境有问题,但是用了这么久的jdk一直都配置的好好的,怎么一到Tomcat上就这么矫情了. 最后查解决方案,原来是我的jdk从官网直接下载的,虽然我修改了java_home,但 ...
- 杭电oj2001-C语言
题目 题目 Problem Description 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离. Input 输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x ...
- 【HAOI2013】花卉节
HA果然是弱省中的弱省…… 原题: ZZ市准备在绿博园举办一次花卉节.Dr.Kong接受到一个任务,要买一批花卉进行布置园林.能投入买花卉的资金只有B元 (1 <= B <= 10^18) ...
- 无法对 数据库'XXXXX' 执行 删除,因为它正用于复制
无法对 数据库'XXXXX' 执行 删除,因为它正用于复制. (.Net SqlClient Data Provider) 使用以下方式一般可以解决 sp_removedbreplication 'X ...
- CodeIgniter 安装指导
CodeIgniter 安装分为四个步骤: 解压缩安装包. 把 CodeIgniter 文件夹和里面的文件上传到你的服务器.通常 index.php 在根目录. 用任何文本编辑器打开 applicat ...