html - 通过 EXCEL VBA 填写 Web 表单 - 找不到 ID 或任何东西来填写表单
问题描述
<div class="GHNF1GMDEI GHNF1GMDGI"><div class="GHNF1GMDJK">Reference</div></div>
<div class="GHNF1GMDGI"
<div class="GHNF1GMDJK">Reference</div>
<input type="text" class="GHNF1GMDGM" maxlength="64" style="width: 350px;">
我试图使用不同的类标签等来填写 Web 表单。但它无法填写表单并且发生错误,对象不支持此属性或方法。
我尝试了很多不同的方法:
Sub automaticformfilling()
Dim ie As InternetExplorer
Dim doc As MSHTML.HTMLDocument
Set ie = CreateObject("internetexplorer.application")
With ie
.Visible = True
.navigate "xxxxxx"
'Wait for loading
Do While .Busy
DoEvents
Loop
Do While .readyState <> 4
DoEvents
Loop
End With
Set doc = ie.document
Set fname = doc.getElementById("j_username")
fname.Value = "xxxx"
Set lastName = doc.getElementById("j_password")
lastName.Value = "xxxx"
doc.getElementsByName("btn_submit")(0).Click
'Set doc = ie.document
'Set invdate = doc.getElementsByClassName("GHNF1GMDEI")
'invdate.Value = "25"
Set refname = doc.getElementsByName("GHNF1GMDGM")
'.doc.getElementsByClassName ("GHNF1GMDGM")
refname.Value = "923456"
End Sub
请帮我解决这个问题。
解决方案
您当前的错误是由于以下事实:
Set refname = doc.getElementsByName("GHNF1GMDGM")
是一个集合,而不是单个元素,所以你不能这样做:
refname.Value = "923456"
您需要使用索引,例如
refname(0).Value = "923456"
除此之外,如果没有 url 或 html,就不能说其他任何可能出错的事情。
边注:
我会将用于页面加载的两个循环压缩为一个:
While .Busy Or .readyState < 4: DoEvents: Wend
推荐阅读
- node.js - Alexa Skill NodeJS - 结合说话和 addAudioPlayerPlayDirective
- html - CSS 背景图像未填充
- javascript - Lodash 从混合数组和对象中获取叶子
- sed - 如何使用逗号作为分隔符在特定位置大写字符串?
- python - Datatable not displaying using Django-datatable-view
- java - @Autowired dependency in jackson deserializer converter with Spring Boot 2.1.0 is null
- excel - 将 excel 列导出到多个文本文件中
- angularjs - 图片 GET 在使用 Webpack 和 AngularJS 的生产环境中抛出 404 错误
- python - 如何从元组列表中聚合值并将它们存储在字典中?
- haskell - Haskell 包 hs_gchart 的安装失败(“约束中的非类型变量参数”)