回 帖 发 新 帖 刷新版面

主题:求大神解救



rivate Sub Command1_Click()
WebBrowser1.Document.getElementById("UserName1").Value = "13300000000"
WebBrowser1.Document.getElementById("PassWord1").Value ="123456"
WebBrowser1.Document.getElementById("loginbutton").Click
End Sub

Private Sub Form_Load()
WebBrowser1.Navigate "https://wlan.ct10000.com"
End Sub



下面是网页源码(以上代码其他网站都可以的,但是这里会提示:实时错误‘91’ 对象变量或with块变量未设置)


<th>账号:</th>
           <td><input type="text" class="logintableinput" name="UserName1" id="UserName1" maxlength=40 onkeyup="allCertify(1)"  onblur="allCertify(1)" value=""/></td>




 <th>密码:</th>
           <td><input type="password" class="logintableinput" name="PassWord1" id="PassWord1" value=""/></td>






td><input type="button" class="loginbutton" onclick="defaultOnCheck(1)" value="登录"/></td>







回复列表 (共4个回复)

沙发

qq邮箱1411591236@qq.com  谢谢了

板凳

引用网页中的元素每个Element 都是一个相对独立的object 之所以会有的时候运行OK的有时候运行时实错误这个其实不难理解,因为 html 语言是边解释边运行(即生成网页),所以会出现有的Element已经生成了,而有的下面的一些Element还没有生成(严格来讲是Element的object没有绑定到其相关的COM)上。这个时候你的程序就已经运行并使用这个没有绑定好的Element了,VB中通过COM来引用网页上的元素的!没绑定当然就找不到对象了。所以就抛出了 91 号的错误,就是引用的对象没有存在的意思!

解决这个问题不难!你在程序中检测网页是否已经全部加载或是检测你要用到的网页元素已经加载了再执行程序的实体代码(你这里是填表)的操作就OK了!


在 DocumentComplete 事件中执行实体代码!如果对速度要求比较高的话,可以用Timer控件来做一个检测程序 通过 On Error 和 Err.Number = 91 来检测你要的元素是否已经加载绑定成功!成功了再停止这个Timer然后执行实体代码!记得在Timer的事件中加入一个 DoEvent 以保证不会影响网页加载的速度!

3 楼

我是新人  具体我该怎么做呢   能帮我写下代码  我自己研究嘛

4 楼

就是知道你是新手所以才这么一一的跟你说这么清楚!如果你不是新人的话!我就不说原理直接给你几行代码你也明白怎么回事!是新手所以才跟你表述得这么清楚!

我来回复

您尚未登录,请登录后再回复。点此登录或注册