标题比较抽象,我说简单说不清楚 具体如下:
我的XP VB6 不考虑 。net编程,也就是说 很多 webbroser新语法 我用不了,很伤心想做点事情 :自动登录 QQmail遇到问题:先提供 http://m.mail.qq.com/ 网页源码  <FORM action=http://w44.mail.qq.com/cgi-bin/login method=post>
<DIV class=topbar><IMG class=logo alt=QQ邮箱 src="/zh_CN/htmledition/images/mobile/mobile_logo.gif">&nbsp;</DIV>
<DIV class="titlebar tbold">登录邮箱</DIV>
<DIV class=content><INPUT type=hidden value=xhtml name=f><INPUT type=hidden name=tfcont>
<DIV>
<DIV>帐号:</DIV><INPUT id=uin size=10 name=uin>@<SELECT style="WIDTH: 130px" name=aliastype><OPTION [email protected] selected>qq.com</OPTION><OPTION value=vip>vip.qq.com</OPTION><OPTION value=fox>foxmail.com</OPTION></SELECT></DIV>
<DIV>
<DIV>密码:</DIV><INPUT id=pwd type=password size=10 value="" name=pwd autocomplete="off"></DIV>
<DIV style="MARGIN-TOP: 4px"><INPUT type=checkbox CHECKED value=1 name=mss>记住我</DIV>
<DIV style="MARGIN-TOP: 4px"><INPUT class=btn1 type=submit value=登录 name=btlogin></DIV>
<DIV class=botbar>
<DIV style="FONT-WEIGHT: normal">视图模式:<B>基本版</B> | <A href="http://mail.qq.com/cgi-bin/loginpage?f=html">标准版</A></DIV>
<DIV>?2011 Tencent Inc.</DIV></DIV></FORM></DIV>这个页面很简单。3个坑要处理。
这个代码我测试是可以用的。。    webBrowser1.Document.Forms(0).uin.setAttribute "value", strUname    
    webBrowser1.Document.Forms(0).aliastype.setAttribute "value", "fox"
    webBrowser1.Document.Forms(0).pwd.setAttribute "value", strUpass
    webBrowser1.Document.Forms(0).mss.setAttribute "value", "0"
    webBrowser1.Document.Forms(0).submit但是 吗的 时好时坏,我心都碎了, 特别第一句  一会可用 一会不可用。查看网页源码什么都没有变,就是莫名其妙的不行了有时候, 在程序里也不提示错误-遇到就直接跳出所在sub,如果在调试模式下 快速窗口执行 则提示 “错误变量类型”,
就这个情况。关键问题 时好时坏,根本没法用!还有几种赋值,不知道为什么 我的环境 vb6 没一个管用的。
webBrowser1.Document.GetElementById("uin").SetAttribute("value", "201010") 这个提示缺少“=” 
 问题基本说完了,下面想请教各位高手 啦1. 尽量不要用 枚举方式 对 带ID或者name的文本框 快速 赋值,有什么好的方法,vb6可行的。。net的不要。2.下拉框 列表框 设置 选择项3.任何快速设置都没有 枚举保险 ,所以我现在最想最想知道的是 ,用 GetElementBy 可以获取一个元素,比如 GetElementById("uin") ,那么其实 这个唯一的input就给找出来了,而我现在想要的是,这个input在 所有元素中webBrowser1.Document.All(I) 排行老几(I)?  也就是说我是否可以用 GetElementBy 迅速得到 某个带有唯一ID的元素 在webBrowser1.Document.All(I) 的 i??? 因为知道I一会我就可以 直接 用 webBrowser1.Document.All(I)。click还是。href等等操作了,大家也许会说 那你直接用GetElementBy跟着操作好了, 不行,因为不问题,有时候会可以,有时候不可以,上面我也说了,为什么我不知道,吗的,因为这个郁闷了很久了。 为了稳定,一次又一次的枚举。唉
大体如上,希望大家帮研究下,谢谢了。不胜感激。。
 

解决方案 »

  1.   

    上面代码还弄错了一句,我想让他不记住我,怎么办???
     
    <INPUT type=checkbox CHECKED value=1 name=mss>记住我</DIV> webBrowser1.Document.Forms(0).mss.setAttribute "value", "0" 这个恐怕不对了。我想让不勾上 记住我如何设置。。
      

  2.   

    发现问题了。webBrowser1.Document.Forms(0).uin.setAttribute "value", strUname  这个地方奇怪了。如果不是用变量 而是 直接的 "123432423" 就没事。一旦换成变量名 就提示  不正确的变量类型, 这个文本框 alue赋值怎么会不行啊,不用字符串难道还能用变体的啊???怎么回事
      

  3.   

     (VB6)
     Dim myid As String 
     myid = "user"
     这一句失败,变量/对象未设置
     Debug.Print WebBrowser1.Document.All(myid).Name 
     
     这一句成功 
     Debug.Print WebBrowser1.Document.All("user").Name  

    ----记住了好了,疯掉也没用,没道理可讲.
      

  4.   

     Dim myid As String  
     myid = "user"
     这一句失败,变量/对象未设置
    Debug.Print WebBrowser1.Document.All(myid).Name   

     这一句成功 
    Debug.Print WebBrowser1.Document.All("user").Name 

    ----记住了好了,疯掉也没用,没道理可讲.
    解决办法:OK
    Debug.Print WebBrowser1.Document.All(myid + "").Name 
      

  5.   

    解决办法2:
     Dim DOC As HTMLDocument
     Set DOC = WebBrowser1.Document
     Debug.Print DOC.All(myid).Name ’这里又是OK的