加载中
加载中
表情图片
评为精选
鼓励
加载中...
分享
加载中...
文件下载
加载中...
修改排序
加载中...
VB写的程序遇到了一个瓶颈,是关于自动提交表单的
hackboymzw2009/01/10软件综合 IP:浙江
程序的作用是自动完成网站的表单填写和提交
现在遇到了一个可恶的页面,没有Value属性,如何给表单的控件附值?

望各位赐教


摘取一部分HTML源码上来供大家分析。

HTML代码如下:

                    
               联系地址:
        
              
客户的详细地址         
                      
                <input name=GetAdr id="GetAdr" size=30 maxlength=50 class=button1>        
                *                                           
            


          
                      
               邮政编码:           
               <input name=Post id="[s:9]ost" size=30 maxlength=6 style="ime-mode:disabled" class=button1>          
                            
            

          


                      
               电话:
          
              
          
               <input name=LifeTel id="LifeTel" size=30 maxlength=13 style="ime-mode:disabled" class=button1>           
            

          


                      
               移动电话:           
               <input name=MTel id="MTel" size=30 maxlength=13 style="ime-mode:disabled" class=button1>          
                  *                                           
            


          
                      
               电子邮件地址:           
                        
                <INPUT name=Email id="Email" size=30 maxLength=50 class=button1>          
                                                            
            


如上所见,并没有出现Value= 这样的属性,不能通过给Value附值提交来实现了。

请问有什么简便的方法吗?听说好象是强行替换上Value属性,然后强行递交给webBrowser执行,据说能提交上去,我没试过,不知道行不行,自己也没办法实现(初学VB)。


我现在采用的自动提交代码如下:
程序自动遍历ID,然后根据条件自动定位,写入数据。

    Dim vDoc, vTag
    Dim i As Integer
    Set vDoc = webBrowser1.Document
    List1.Clear
    For i = 0 To vDoc.All.Length - 1
        If UCase(vDoc.All(i).TagName) = "INPUT" Then
            Set vTag = vDoc.All(i)
            If vTag.Type = "text" Or vTag.Type = "password" Then
                List1.AddItem vTag.Name
                Select Case vTag.Name
                    Case "myid"
                        vTag.Value = List2.List(key_2)
                        List2.ListIndex = key_2
                        key_2 = key_2 + 1
                        If List2.List(key_2) = "" Then Beep
                    Case "pwd"
                        vTag.Value = "654321"
                    Case "verifycode"
                        vTag.Value = Text2.text
            End Select
            ElseIf vTag.Type = "submit" Then
                vTag.Click
            End If
        End If
    Next i

上面这个自动提交方法碰到我前面提到的HTML代码,就不灵了。。。
就连TYPE类都找不到一个。。。

我是这么写的:

    Dim vDoc, vTag
    Dim i As Integer
    Set vDoc = webBrowser1.Document
    List1.Clear
    For i = 0 To vDoc.All.Length - 1
        If UCase(vDoc.All(i).TagName) = "INPUT" Then
            Set vTag = vDoc.All(i)
            If vTag.Type = "text" Or vTag.Type = "radio" Or vTag.Type = "radio" Or vTag.Type = "select" Or vTag.Type = "textarea" Then
                List1.AddItem vTag.Name
                Select Case vTag.Name
                    Case "name"
                        vTag.Value = Sname(i).text        '此处用的是控件数组,textbox控件,下同
                    Case "sex"
                        vTag.Value = Ssex(i).text
                    Case "psid"
                        
                        vTag.Value = Val(Sid(i).text + 1)
                    Case "birdy"
                        vTag.Value = Val(Mid$(Sid(i).text, 6, 4))
                    Case "area"
                        vTag.Value = SdqB(i).text
                    Case "getadr"
                        vTag.Value = SdqC(i).text
                    Case "mtel"
                        vTag.Value = Smtel(i).text
                    Case "birdm"
                        vTag.Value = Val(Mid$(Sid(i).text, 10, 2)) / 1
                    Case "birdd"
                        vTag.Value = Val(Mid$(Sid(i).text, 12, 2)) / 1
                    Case "state"
                        vTag.Value = "浙江省"
                    Case "txtnote"
                        vTag.Value = "TEST"
            End Select
            ElseIf vTag.Type = "submit" Then
                vTag.Click
            End If
        End If
    Next i
来自:计算机科学 / 软件综合
5
新版本公告
~~空空如也
我说要有光
16年6个月前 IP:未同步
59977
webBrowser功能少 限制多  建议直接通过HTTP的方式提交表单
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
hackboymzw作者
16年6个月前 IP:未同步
59979
如何实现呢?HTTP直接提交我还没试过
可以对没有Value属性的页面操作吗?

拜托大家了,帮我想想办法,不想就这么放弃了

在CSDN上发过帖,但是没人鸟我。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
93°
16年6个月前 IP:未同步
60018
用费德勒抓包,然后用inet控件提交。。

当然.NET的话用webclient会爽死人的!webclient1.uploaddata
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
hackboymzw作者
16年6个月前 IP:未同步
60181
93 能详细说下吗?
我QQ:175304004
因为没做过这方面的程序,况且本人VB也是初学,光搞验证码就够呛了,现在验证码问题解决了,就差这个了
同志们,发扬下雷锋精神吧
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
hackboymzw作者
16年6个月前 IP:未同步
60401
突然发现这个表单页面是用Javascript写的,HTML里没有Value估计和这个有关系

<head>
<link href="../images/font1.css" rel="stylesheet" type="text/css">
</head>


<SCRIPT language=Javascript>
function IsEmpty(s)
{

if (s.length == 0)
return true;
}
function startSpace(value)
{
ch = value.substring(0, 1);
if(ch == " ")
return true;
}
function charOnly(fieldValue)
{
  var length = fieldValue.length;
  var ch = "";
  for (var i = 0; i < length; i++)
  {
    ch = fieldValue.substring(i, i + 1);
    if ( ((ch < "a" || "z" < ch) && (ch < "A" || "Z" < ch)) && ( ch  <"0" || "9" < ch ) )
  return false;
  }
  return true;
}
</script>


<SCRIPT language=Javascript>

function ValidateFields2(form)
{


  if(IsEmpty(form.Name.value))
  {
alert("请输入你的姓名!");
form.Name.focus();
return false;
  }
  if(IsEmpty(form.PSID.value))
  {
alert("身份证不能为空!");
form.PSID.focus();
return false;
  }
  
  if(!(form.PSID.value.length==15||form.PSID.value.length==18))
  {
alert("身份证为15位或者为18位!");
form.PSID.focus();
return false;
  }
        
    if(isNaN(form.BirdY.value))
  {
    alert("生日的年份必须为数字!");
form.BirdY.focus();
return false;
  }

  if(IsEmpty(form.area.value))
  {
alert("请输入您所在的县市!");
form.area.focus();
return false;
  }

  if(IsEmpty(form.GetAdr.value))
  {
alert("请输入您详细的通讯地址!");
form.GetAdr.focus();
return false;
  }
  if(IsEmpty(form.MTel.value))
  {
alert("请输入手机号!");
form.MTel.focus();
return false;
  }
  if(isNaN(form.MTel.value))
  {
    alert("手机号输入有误!");
form.MTel.focus();
return false;
  }
  
  if(IsEmpty(form.txtnote.value)||form.txtnote.value.length > 49)
  {
alert("请输入基本简介,并且长度小于50位!");
form.txtnote.focus();
return false;
  }
  
  form.submit();
  return true;
}
</script>  


  
  

    

      
  
            

        

      
      
      
您现在所在的位置 => 客户管理 => 客户登记
            
      
    
      
      
            
      

      
客户登记

      
        <FORM name='FrmNewUser' action='regster.asp' method='post'>
          
          
            
              
                    
                  
                    
                  
                    
                      
                                                        
                    
                    
                      
                                                        
            
姓名: 请填写真实姓名         
                <INPUT name=Name id="Name" size=12 maxLength=10 class=button1>        
                * <input type="radio" name="sex" value="0" checked> 女士 <input type="radio" name="sex" value="1">先生
身份证号码:
必须认真填写,做为考核依据
        
                <INPUT name=PSID id="[s:9]SID" size=30 maxLength=18 style="ime-mode:disabled" class=button1>        
                *
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
所属分类
上级专业
同级专业
hackboymzw
学者 机友 笔友
文章
18
回复
186
学术分
2
2008/10/30注册,1年0个月前活动

技术宅

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的