Html 从onclick属性中查找按钮并单击
我正在使用VBA,并在HTML页面中触发一个下载按钮,该按钮检查以下代码:Html 从onclick属性中查找按钮并单击,html,excel,vba,onclick,intranet,Html,Excel,Vba,Onclick,Intranet,我正在使用VBA,并在HTML页面中触发一个下载按钮,该按钮检查以下代码: <input onClick="javascript:__dopostback('GridView1','Accountnumber$0')" type="button" value="Download"></input> 但我不知道如何使用以下VBA触发: On Error GoTo Err_Clear myURL = "Enter your url" Set MyBrowser = Ne
<input onClick="javascript:__dopostback('GridView1','Accountnumber$0')" type="button" value="Download"></input>
但我不知道如何使用以下VBA触发:
On Error GoTo Err_Clear
myURL = "Enter your url"
Set MyBrowser = New InternetExplorer
MyBrowser.Silent = True
MyBrowser.Navigate myURL
MyBrowser.Visible = True
Do
Loop Until MyBrowser.ReadyState = READYSTATE_COMPLETE
Set htmlDoc = MyBrowser.Document
htmlDoc.all.txtAccNo.Value = ""
htmlDoc.all.ddlReasons.Value = ""
htmlDoc.all.txtRequester.Value = ""
htmlDoc.all.txtMobNo.Value = ""
htmlDoc.all.txtLandLine.Value = ""
htmlDoc.all.txtEmailAdd.Value = ""
htmlDoc.all.ddlRelation.Value = ""
htmlDoc.all.button1.Click
'**OnClick event required here **
htmlDoc.getElementsByXpath("input[type=""button""]")(0).Click '<--(Not Working)
Err_Clear:
If Err <> 0 Then
Err.Clear
Resume Next
End If
出错时转到Err\u清除
myURL=“输入您的url”
设置MyBrowser=New InternetExplorer
MyBrowser.Silent=True
我的浏览器。浏览我的URL
MyBrowser.Visible=True
做
循环,直到MyBrowser.ReadyState=ReadyState\u完成
设置htmlDoc=MyBrowser.Document
htmlDoc.all.txtAccNo.Value=“”
htmlDoc.all.ddlReasions.Value=“”
htmlDoc.all.txtRequester.Value=“”
htmlDoc.all.txtMobNo.Value=“”
htmlDoc.all.txtLandLine.Value=“”
htmlDoc.all.txtEmailAdd.Value=“”
htmlDoc.all.ddlRelation.Value=“”
htmlDoc.all.button1.单击
'**此处需要OnClick事件**
htmlDoc.getElementsByXpath(“输入[type=”“button”“]”)(0)。单击“有趣的是,您正在调用getElementsByXpath
,但我在我的Microsoft HTML对象库(Win10/Excel 2013)中找不到此方法
也许您可以尝试使用CSS选择器,该选择器可以与HTMLDocument
类的querySelector
方法一起使用:
然后,代替使用:
htmlDoc.getElementsByXpath("input[type=""button""]")(0).Click <--(Not Working)
编辑
查看页面源代码后,根据OP声明:
此页面上存在多个下载按钮,我想单击第一个按钮
然后,我们可以将选择简化为:
table#GridView1 > tbody > tr > td > input[onclick]
这将转换为在表体中查找具有onclick
属性的第一个
因此,更新后的VBA是:
Dim strSelector As String
Dim objElement As Object
strSelector = "table#GridView1 > tbody > tr > td > input[onclick]"
Set objElement = htmlDoc.querySelector(strSelector)
If Not objElement Is Nothing Then
objElement.Click
Else
MsgBox "Selector did not work!"
End If
选择器是在Chrome控制台中测试的,所以我的假设是它应该以类似的方式在VBA中工作。嗯
GetElementsByPath
不在我的Microsoft HTML对象库中-它在你的对象库中吗?是的,我有,如果您没有HTML对象库,那么单击OnClick eventMS office 2012怎么样?给出错误并突出显示最后一条指令objElement。不幸的是,单击
,这意味着查询选择器
不起作用,objElement
将为无
。我更新了代码以提醒是否存在这种情况。你有一个公共URL,我可以使用它来测试代码吗?是的,我有公共URL:(),但它也有Captcha(字符图像)。有解决方案吗@Robin您引用的URL没有id为GridView1
的表。。。所以我不能测试。我发布了示例代码以提供解决方案,但不幸的是,除非我们能够看到您正在使用的HTML,否则没有更多的解决方案。
table#GridView1 > tbody > tr > td > input[onclick]
Dim strSelector As String
Dim objElement As Object
strSelector = "table#GridView1 > tbody > tr > td > input[onclick]"
Set objElement = htmlDoc.querySelector(strSelector)
If Not objElement Is Nothing Then
objElement.Click
Else
MsgBox "Selector did not work!"
End If