使用VBA点击网页上无文本图片提交按钮的实现方法
代码失效原因
- 变量未定义:代码中直接使用
doc对象,但没有提前声明赋值,应该用ie.document来访问当前加载的页面DOM。 - 缺少页面等待逻辑:点击「Worklist」链接后页面会发生跳转或刷新,你没有等待新页面加载完成就直接查找元素,此时DOM还没渲染完成,自然找不到目标按钮。
- 索引取值错误:
getElementsByClassName返回的集合是从0开始计数的,如果页面只有1个class为edit的图片按钮,你用索引1是取不到元素的,需要改成0。 - 点击事件触发不兼容:部分IE版本下直接对img元素调用
Click方法不会触发绑定的onclick事件,需要手动触发事件或者直接执行onclick绑定的函数。
修正后代码
Sub SIM() Dim ie As InternetExplorer Dim hyper_link As Object Dim cvabutton As Object Set ie = CreateObject("InternetExplorer.Application") ie.Visible = True ie.navigate "https://替换为你实际的站点地址" ' 等待首页加载完成 Do While ie.readyState <> 4 Or ie.Busy DoEvents Loop ' 点击Worklist链接 Set allhyperlink = ie.document.getElementsByTagName("A") For Each hyper_link In allhyperlink If hyper_link.innerText = "Worklist" Then hyper_link.Click Exit For End If Next ' 等待点击Worklist后的新页面加载完成 Do While ie.readyState <> 4 Or ie.Busy DoEvents Loop ' 查找编辑按钮 注意索引从0开始 Set cvabutton = ie.document.getElementsByClassName("edit")(0) ' 直接点击失效的话优先用下面这行触发onclick事件,兼容性更好 ' cvabutton.FireEvent "onclick" ' 也可以直接执行绑定的JS函数 按你的实际参数调整即可 ' ie.document.parentWindow.execScript "editRow(" & cvabutton & ",17235)", "JavaScript" cvabutton.Click End Sub
额外注意
如果页面有多个编辑按钮,你可以遍历getElementsByClassName返回的集合,通过src属性或者其他特征匹配你要点击的目标按钮即可。
内容的提问来源于stack exchange,提问作者johg6
相关产品推荐
相关产品推荐

