网页填表的URL判断问题
有一个网页的填表,它是这样的流程:1.第一个页面,只有submit进入下一页按钮,点击;2、进入第二个页面,填表,有姓名、性别、邮箱,填表完毕后点击submit进入下一页;3,进入第三个页面,填密码,最后点击提交按钮!我用了判断URL的代码让上面的流程合起来自动填表,就是自动化的意思,从第一步到最后一步都是点击1个按钮就完成,但老是实现不了,不知为什么,请问可以给下主要代码我参考一下吗?或者是可以用其它方法来判断实现吗?谢谢!
2012-05-04 16:22
程序代码:Private Sub Web1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
On Error Resume Next
请求数据处理 = 未处理 '设置为处理了
Dim doc As String
Dim doctext
Dim i As Long
Dim j As Long
Dim k As String
Set doctext = Web1.Document.body.createTextRange()
doc = doctext.htmltext
'断线处理
If InStr(1, URL, "login.cfm?message=") > 0 Then '提示未登录,重上线
Call Command2_Click
Exit Sub
End If
If InStr(1, doc, "无法显示网页") > 0 Then '打开网页失败,重上线
Call Command2_Click
Exit Sub
End If
If InStr(1, doc, "无法找到服务器") > 0 Then '找不到服务器,重上线
Call Command2_Click
Exit Sub
End If
If InStr(1, URL, 代理中国URL) > 0 Then '解析代理服务器
Call 解析代理服务器(doc)
End If
If InStr(1, doc, "请不要频繁刷新网页") > 0 Then '刷新警告,回滚
Call 回滚被冲洗的自动封包
End If
If InStr(1, URL, ".cfm") > 0 Then
If 游戏URL = "" Then
i = InStr(1, URL, "/")
Do While i > 0
j = i
i = InStr(i + 1, URL, "/")
Loop
'取游戏的地址,
游戏URL = Left(URL, j)
游戏COOKIE = Web1.Document.Cookie
Timer1.Enabled = True
End If
'自动处理请求数据 = 0
'处理所有数据
If InStr(1, doc, "parent.document.getElementById('NewMessage').src='skin/index/28") > 0 Then '含消息数据,说明前面的都有了
If Not 本月消息提示 Then '如果本月已提示,则不再提示了.
If InStr(1, doc, "parent.document.getElementById('NewMessage').src='skin/index/28.gif") > 0 Then
Call 提示框.start(用户名)
本月消息提示 = True
End If
End If
Call HTML中取地(doc, 1) '统一在此解析
Call HTML中取地(doc, 2)
Call HTML中取地(doc, 3)
Call 显示地
Call 解析资源属性包(doc)
If 用户名2 = "" And 用户名 <> "" Then
用户名2 = 用户名
End If
If 用户名2 <> "" And 用户名 <> "" Then '串号
If 用户名2 <> 用户名 Then
Call Command2_Click '串号,重登录
End If
End If
Call 显示资源
End If
End If
If InStr(1, URL, gamehomeurl) > 0 And 自动处理请求数据(0) = 未处理 Then '游戏首页
If 用户名 = "" And 自动处理请求数据(0) = 未处理 Then
自动处理请求数据(0) = 请求数据
Call 增加挂机自动封包1(生产建设URL, "", "读建筑属性") '读建筑属性
Call 增加挂机自动封包1(军事管理URL, "", "读兵的名称") '读地\资源\兵的种类
Call 增加挂机自动封包1(我的英雄URL, "", "读英雄列表") '读英雄数据
Call 增加挂机自动封包1(gamehomeurl, "", "返回首页") '返回首页
End If
End If
If InStr(1, Web1.Document.URL, 生产建设URL) > 0 Then
If Not 是否解析了建筑属性包 Then
Call 解析建筑属性包(doc)
Call 更新建筑
If Label6.Caption <> 用户名 Then
Label6.Caption = 用户名
Me.Caption = "帝国远征辅助---" & 用户名
End If
是否解析了建筑属性包 = True
End If
End If
If InStr(1, Web1.Document.URL, 军事管理URL) > 0 Then
'Call 记录日志(doc)
Call 解析武器包(doc)
Call 解析部队训练包(doc) '每次都要解析兵能训练的数量
If Not 是否解析了兵属性包 Then
Call Command23_Click '显示部队
是否解析了兵属性包 = True
Label6.Caption = 用户名
Me.Caption = "帝国远征辅助---" & 用户名
End If
If 自动处理请求数据(0) = 请求数据 Then
Call 保留登录地址
Call 读取设置(用户名)
'Web1.Navigate 游戏URL & "index.cfm"
自动处理请求数据(0) = 发送数据
End If
If Check3.Value > 0 Then '解析部队包后,先做建筑,再补兵
If 自动处理请求数据(自动建筑) = 请求数据 Then '正在请求数据,需要生成建筑包
If Check2(0).Value > 0 Then
Call 生成自动建筑封包
End If
End If
If Check2(4).Value > 0 And 自动处理请求数据(自动补兵) = 请求数据 Then
Call 生成自动补兵包
End If
End If
End If
If InStr(1, Web1.Document.URL, 我的英雄URL) > 0 Then
'取英雄
Call 解析英雄属性包(doc)
Call 显示英雄
'优先 探险
If Check2(5).Value = 0 Then '没有设置自动打怪
If Check3.Value > 0 And 自动处理请求数据(自动英雄) = 请求数据 And Check2(3).Value > 0 Then '派将探索
Call 生成英雄探险封包
End If
End If
If Check3.Value > 0 And Check2(5).Value > 0 And Check10.Value = 0 Then '如果选了打怪,并且非自动选怪时,收到英雄数据后,就开始
If 自动处理请求数据(自动打怪) = 请求数据 Then '否则,立即开始派兵.
Call 生成自动打怪
End If
End If
End If
If InStr(1, Web1.Document.URL, "Festal_GetFreeNum_NewPlayer.cfm") > 0 Then '如果转新手转盘
i = InStr(1, doc, "FreeNum")
If i > 0 Then
i = InStr(i, doc, "class=tx>")
If Mid(doc, i + 9, 1) > "0" Then
i = Rnd() * 2147483647
Call 增加挂机自动封包1("Festal_GetAwardXml_NewPlayer.cfm?id=" & i, "", "转新手转盘")
End If
End If
End If
If Check3.Value > 0 Then '选了挂机后
If InStr(1, Web1.Document.URL, 探地封包.URL) > 0 Then
可派探地人员 = CLng(HTML中取数字(doc, "指派 <INPUT size=5 value"))
探地耗粮 = CLng(HTML中取数字(doc, "一个探索者,需要"))
If 可派探地人员 > 0 Then
If Check2(1).Value > 0 And 自动处理请求数据(自动探地) = 请求数据 Then '正在请求数据,需要生成建筑包
'生成探地封包
Call 生成自动探地封包
End If
End If
End If
If InStr(1, URL, 市场贸易URL) > 0 Then '市场
最大交易量 = HTML中取数字(doc, "还能交易")
If 最大交易量 > 0 Then
If Check2(6).Value > 0 And 自动处理请求数据(自动援助) = 请求数据 Then '自动援助
Call 生成自动援助封包
Else
If Check2(2).Value > 0 And 自动处理请求数据(自动卖货) = 请求数据 Then '自动卖货
Call 生成自动卖货封包
End If
End If
End If
End If
If Check10.Value > 0 Then '如果自动怪物,则判断是否为地图
If InStr(1, Web1.Document.URL, "map.cfm") > 0 Then '自动刷新的地图
If 自动处理请求数据(自动地图) = 请求数据 Then
Call 解析怪物数据(doc)
Call 计算自动兵力
End If
End If
End If
If Check31.Value > 0 And 自动处理请求数据(自动提炼) = 请求数据 Then
If InStr(1, URL, 提炼封包.URL) > 0 Then
If InStr(1, doc, "您当前没有晶矿提炼场") > 0 Then '没的提炼场
'Check31.Value =0 '取消提炼功能
Else
k = 解析晶石ID(doc)
If Len(k) > 0 Then
Call 增加挂机自动封包1(k, "", "自动提炼晶石")
End If
End If
自动处理请求数据(自动提炼) = 发送数据
End If
End If
End If
If InStr(1, URL, 选马URL) > 0 Then '选马
Call 解析资源属性包(doc)
Call 显示资源
Call 分解马数据(doc)
End If
If Check23.Value > 0 Then '扫货
If InStr(1, Web1.Document.URL, 自动扫货URL) > 0 Then
Call 自动扫货处理(doc, Combo14.Text)
'Stop
End If
End If
If InStr(1, URL, 设计图纸URL) > 0 Then '分析设计图纸
i = InStr(1, URL, "=")
If i > 0 Then
j = CLng(Mid(URL, i + 1))
Else
j = 1
End If
Call 分析图纸(doc, j)
End If
End Sub

2012-05-04 17:20
2012-05-05 11:47
2012-05-05 13:02
程序代码:Private Sub 发POST包(数据 As String, URL As String)
On Error Resume Next
Dim poststr() As Byte
poststr = StrConv(数据, vbFromUnicode)
Web1.Navigate URL, , , poststr, "Content-Type: application/x-www-form-urlencoded"
End Sub

2012-05-06 09:04