注册 登录
编程论坛 VB6论坛

VB6.0在网页弹窗登录界面自动填表失败,如何解决

zt5101314 发布于 2023-03-22 20:24, 1928 次点击
网页主页https://XXXX.
内嵌框架网页https://XXXX.(此网页单独登录提示失败,需点击主页右上角“登录”来登录账号)
问题描述:VB6.0在网页弹窗登录界面自动填表失败,代码如下。
Private Sub Command1_Click()
Randomize
On Error Resume Next
Dim a As Variant
Dim Vdoc As MSHTML.HTMLDocument
Set Vdoc = WebBrowser1.document
   For Each a In Vdoc.getElementsByTagName("input")
        Select Case a.Name
            Case "username"
                a.Value = "13888888888"
            Case "password"
                a.Value =  "123456"
            Case "vertifyCode"
                a.Value = "1234"
        End Select
   Next
WebBrowser1.document.getElementById("LoginBtn").Click
这个问题源于弹窗中的登录表单是在iframe中,而WebBrowser控件默认只能访问主框架的document,求助大佬解决:实现获取到iframe的document,完成自动填表?

[此贴子已经被作者于2023-3-22 22:11编辑过]

10 回复
#2
阳光上的桥2023-03-23 09:06
根据情况,选择下面的方式访问框架内文档:

WebBrowser1.document.getElementsByTagName("iframe")(0).contentWindow.document
WebBrowser1.document.getElementByTagId("iframeid").contentWindow.document
#3
wds12023-03-23 11:41
利用主框架和子框架ID定位或者名称定位。

支持多框架,下面示例:
1、获取一层框架oaStartFrm的子框架;
2、获取二层框架frame的mainframe的框架
3、获取3层框架的input标签,当然也可以获取ID什么的
WebBrowser1.Document.getElementById("oaStartFrm").contentDocument.getElementsByTagName("frame")("mainFrame").contentDocument.getElementsByTagName("input")

[此贴子已经被作者于2023-3-23 12:44编辑过]

#4
kings123332023-03-23 19:16
MS都不更新IEB ,以后有些网页WebBrowser控件都打不开怎么办?
#5
风吹过b2023-03-23 20:34
方法一
在 iframe 的话,在 WebBrowser 载入完成事件中,判断每次完成的网页的URL,如果为 iframe 里指定地址时,保存 对象
同时 点亮登录按钮。
每载入网页时,这个事件会触发 iframe + 1 次事件,最后一个为最外层URL载入完成。
我一般用这个,如以前 盛大页游 登录 就是这样的。我填表用的是 JS 函数,更简洁一些。

方法二,遍类 WebBrowser  的 iframe ,根据URL来判断是不是要的那个,是,对 对象进行操作。
也就是3楼的方法
#6
独木星空2023-03-25 21:17
回复 5楼 风吹过b
在这个论坛上,风吹过b是我最敬佩的人物。有能力,更有实力。
#7
牛掰2023-03-27 16:02
回复 6楼 独木星空
是更有时间
#8
zt51013142023-03-28 07:50
统一回复,此代码已解决登录问题。
Private Sub Command1_Click()
Dim Vdoc As mshtml.HTMLDocument
Set Vdoc = WebBrowser1.document
Vdoc.frames(1).document.All("username").Value = Text1.Text
Vdoc.frames(1).document.All("password").Value = Text2.Text
Vdoc.frames(1).document.All("vertifyCode").Value = Text3.Text
Vdoc.frames(1).document.getElementById("LoginBtn").Click
End Sub
#9
yuanyong9112023-07-29 17:33
回复 8楼 zt5101314
我也遇到类似问题,看你的代码很精简。就测试了一下。但 提示 如果方便 帮我再看看 哪里出现了问题。万分感谢

---------------------------
Microsoft Visual Basic
---------------------------
编译错误:

用户定义类型未定义
---------------------------
确定   帮助   
---------------------------
#10
yuanyong9112023-07-29 17:33
以下是引用zt5101314在2023-3-28 07:50:33的发言:

统一回复,此代码已解决登录问题。
Private Sub Command1_Click()
Dim Vdoc As mshtml.HTMLDocument
Set Vdoc = WebBrowser1.document
Vdoc.frames(1).document.All("username").Value = Text1.Text
Vdoc.frames(1).document.All("password").Value = Text2.Text
Vdoc.frames(1).document.All("vertifyCode").Value = Text3.Text
Vdoc.frames(1).document.getElementById("LoginBtn").Click
End Sub

我也遇到类似问题,看你的代码很精简。就测试了一下。但 提示 如果方便 帮我再看看 哪里出现了问题。万分感谢

---------------------------
Microsoft Visual Basic
---------------------------
编译错误:

用户定义类型未定义
---------------------------
确定   帮助   
---------------------------
#11
约定的童话2023-07-29 19:48
回复 10楼 yuanyong911
源码发上来看下
1