最近写了点东西,关于网页的自动提交等问题,不会写就上网找,发现代码比较乱,没有什么条理,虽然自己的程序写完了,但是不敢独享,斗胆班门弄斧一下,高手莫xiào !闲话少说,来点正经的,首先简单叙述一下网页上常见的我们用到的东东。
首先就是一些控件,我们要填写的东西,选择的选项,下拉列表等等。
一、获取网页源代码:一般用右键查看即可,当然也有些不行的,另类方法有很多,实在不行试试这段代码:
WebBrowser1.Document.body.createtextrange().htmltext
二、观察代码找到我们要的东东:
以百度主页为例:
1、观察主页:
我们要填写的是一个文本框,然后点那个搜索按钮
2、右键查看源代码(代码很多,不都贴了),关键部分:
文本框
<input type=text name=wd class=ff size=35 maxlength=100>
按钮
<input type=submit value=百度搜索>
3、编写代码:
首先呢,定位我们的做法:
可以打开一个新的IE窗口(使用shell "explorer www.baidu.com"即可),然后获取其中的WEB对象(代码网上有的)
我们这样做:在程序内部打开网页(在工程中添加 Microsoft Internet Controls 部件(即WebBrowser控件),命名为mDemoWB)
填写文本框时比较简单了!由于网页代码明确给出了TEXT控件的名称:name=wd,如下调用即可:
WBDocument.body.All("wd").Value = "123"
而提交那里,就比较“恶心”了,没有明确控件ID或者NAME,但是很明确的网页代码是input type=submit,这说明该按钮的作用是提交网页,那好办了,使用如下调用即可实现相同功能:
WBDocument.Forms(0).submit
至此,问题解决
完整代码如下:(代码比较简单,所以不提供下载,大家复制就好)
'本程序由ZCSOR编写于2007年1月13日
'QQ:47493585
'E-MAIL:shaoyan5@163.com
'Blog:http://blog.youkuaiyun.com/zcsor
'转发请保留作者以上信息
'********************************************************************
'DEMO1:填写表单并提交
'********************************************************************
'引用页:www.baidu.com
'注意网页源代码中如下段:
'<input type=text name=wd class=ff size=35 maxlength=100>
'<input type=submit value=百度搜索>
'在工程中添加 Microsoft Internet Controls 部件(即WebBrowser控件),命名为mDemoWB
'WebBrowser控件Document对象
Dim WBDocument As Variant
Private Sub cmdAddText_Click()
mDemoWB.Navigate "www.baidu.com"
End Sub
Private Sub Form_Load()
'使用空白页初始化浏览
mDemoWB.Navigate "about:blank"
End Sub
Private Sub mDemoWB_DocumentComplete(ByVal pDisp As Object, URL As Variant)
'打开空白页时跳过
If URL <> "http://www.baidu.com/" Then Exit Sub
'等待数据下载完毕
Do
If Not mDemoWB.Busy Then Exit Do
DoEvents
Loop
'获取Document对象
Set WBDocument = mDemoWB.Document
'填写表单,此处wd为开头网页代码中第一行name=wd处wd,通过控件名称来设置其值
WBDocument.body.All("wd").Value = "123"
'提交表单,此处调用了提交方法(第二行type=submit处),对于现行IE版本一般不会出现问题,但不同版本浏览器可能无法成功
Call WBDocument.Forms(0).submit
End Sub