求可点击指定HTML提交按钮的正确VBA代码(附报错尝试代码)
正确点击目标HTML提交按钮的VBA代码
你之前代码的问题说明:
doc.getElementsByClassName("btn btn-primary").Item(1).Click:VBA中DOM元素集合的索引从0开始,而非1;部分旧IE版本对多类名空格格式的getElementsByClassName支持不佳。idoc.querySelector("input[type*=submit]").Click:变量名前后不一致(混用了doc和idoc),若变量名统一,该选择器逻辑本身可行。doc.getElementsByValue("Submit").Click:DOM API中不存在getElementsByValue方法,直接调用会报错。
可行的正确代码:
方法1:使用querySelector(推荐,简洁可靠)
利用CSS选择器精准匹配元素,只要选择器能唯一定位按钮即可:
' 确保doc是已正确获取的HTMLDocument对象 doc.querySelector("input.btn.btn-primary[type='submit'][value='Submit']").Click
简化版(根据页面实际情况选择,只要能唯一匹配):
doc.querySelector("input.btn-primary").Click
doc.querySelector("input[value='Submit']").Click
方法2:使用getElementsByClassName(兼容旧IE)
注意索引从0开始,若多类名格式不生效则手动筛选:
' 直接调用(若浏览器支持多类名空格分隔) doc.getElementsByClassName("btn btn-primary").Item(0).Click
手动筛选版本:
Dim targetBtn As Object For Each targetBtn In doc.getElementsByClassName("btn") If targetBtn.className = "btn btn-primary" And targetBtn.Value = "Submit" Then targetBtn.Click Exit For ' 找到后退出循环 End If Next
方法3:遍历input标签筛选
通过标签名获取所有输入框,再匹配属性:
Dim inputEle As Object For Each inputEle In doc.getElementsByTagName("input") If inputEle.Type = "submit" And inputEle.Value = "Submit" And inputEle.className = "btn btn-primary" Then inputEle.Click Exit For End If Next
内容的提问来源于stack exchange,提问作者rohit rajendran
相关产品推荐
相关产品推荐

