|
第四种方法比较麻烦,而且只能针对比较简单些的验证码,比如纯数字的,而且数字的形态不会动态变化的那种。
思路是这样的,对于4位数字的验证码,需要先分别单独保存下0-9十个数字这十个图片,然后将验证码分割为4部分,然后逐一与保存下来的图片进行对比。
具体代码以前也有人给出过的,我稍微修改了下,参考代码如下:
With Browser("Exchange Management System").Page("Exchange Management System")
Dim a,b,c,d,num
'qX是每一个位图检查点,q1--q10第一位,q11--q20第二位,q21--q30第三位,q31--q40第四位
q1=.Image("imgcode").Check(CheckPoint("imgcode"))
q2=.Image("imgcode").Check(CheckPoint("imgcode_2"))
q3=.Image("imgcode").Check(CheckPoint("imgcode_4"))
q4=.Image("imgcode").Check(CheckPoint("imgcode_5"))
q5=.Image("imgcode").Check(CheckPoint("imgcode_6"))
q6=.Image("imgcode").Check(CheckPoint("imgcode_8"))
q7=.Image("imgcode").Check(CheckPoint("imgcode_9"))
q8=.Image("imgcode").Check(CheckPoint("imgcode_10"))
q9=.Image("imgcode").Check(CheckPoint("imgcode_11"))
q10=.Image("imgcode").Check(CheckPoint("imgcode_12"))
q11=.Image("imgcode").Check(CheckPoint("imgcode_13"))
q12=.Image("imgcode").Check(CheckPoint("imgcode_14"))
q13=.Image("imgcode").Check(CheckPoint("imgcode_15"))
q14=.Image("imgcode").Check(CheckPoint("imgcode_16"))
q15=.Image("imgcode").Check(CheckPoint("imgcode_17"))
q16=.Image("imgcode").Check(CheckPoint("imgcode_18"))
q17=.Image("imgcode").Check(CheckPoint("imgcode_19"))
q18=.Image("imgcode").Check(CheckPoint("imgcode_20"))
q19=.Image("imgcode").Check(CheckPoint("imgcode_21"))
q20=.Image("imgcode").Check(CheckPoint("imgcode_24"))
q21=.Image("imgcode").Check(CheckPoint("imgcode_25"))
q22=.Image("imgcode").Check(CheckPoint("imgcode_26"))
q23=.Image("imgcode").Check(CheckPoint("imgcode_27"))
q24=.Image("imgcode").Check(CheckPoint("imgcode_28"))
q25=.Image("imgcode").Check(CheckPoint("imgcode_29"))
q26=.Image("imgcode").Check(CheckPoint("imgcode_30"))
q27=.Image("imgcode").Check(CheckPoint("imgcode_32"))
q28=.Image("imgcode").Check(CheckPoint("imgcode_33"))
q29=.Image("imgcode").Check(CheckPoint("imgcode_34"))
q30=.Image("imgcode").Check(CheckPoint("imgcode_35"))
q31=.Image("imgcode").Check(CheckPoint("imgcode_36"))
q32=.Image("imgcode").Check(CheckPoint("imgcode_37"))
q33=.Image("imgcode").Check(CheckPoint("imgcode_38"))
q34=.Image("imgcode").Check(CheckPoint("imgcode_39"))
q35=.Image("imgcode").Check(CheckPoint("imgcode_40"))
q36=.Image("imgcode").Check(CheckPoint("imgcode_41"))
q37=.Image("imgcode").Check(CheckPoint("imgcode_42"))
q38=.Image("imgcode").Check(CheckPoint("imgcode_43"))
q39=.Image("imgcode").Check(CheckPoint("imgcode_44"))
q40=.Image("imgcode").Check(CheckPoint("imgcode_45"))
'得出第一位验证码,具体哪个图片对应什么数字根据自己截取的情况来,以下类同
Select Case True
Case q1 a=1
Case q2 a=2
Case q3 a=3
Case q4 a=4
Case q5 a=5
Case q6 a=6
Case q7 a=7
Case q8 a=8
Case q9 a=9
Case q10 a=10
Case Else MsgBox("No imgage matched num1")
End Select
'得出第二位验证码
Select Case True
Case q11 b=1
Case q12 b=2
Case q13 b=3
Case q14 b=4
Case q15 b=5
Case q16 b=6
Case q17 b=7
Case q18 b=8
Case q19 b=9
Case q20 b=10
Case Else MsgBox("No imgage matched num2")
End Select
'得出第三位验证码
Select Case True
Case q21 c=1
Case q22 c=2
Case q23 c=3
Case q24 c=4
Case q25 c=5
Case q26 c=6
Case q27 c=7
Case q28 c=8
Case q29 c=9
Case q30 c=10
Case Else MsgBox("No imgage matched num3")
End Select
'得出第四位验证码
Select Case True
Case q31 d=1
Case q32 d=2
Case q33 d=3
Case q34 d=4
Case q35 d=5
Case q36 d=6
Case q37 d=7
Case q38 d=8
Case q39 d=9
Case q40 d=10
Case Else MsgBox("No imgage matched num4")
End Select
num=(cstr(a)+cstr(b)+cstr(c)+cstr(d))
msgbox " 验证码是:"&num
.WebEdit("imgcode").Set ""&num
.WebButton("登 录").Click
.Sync
End With |
|