Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 从onclick属性中查找按钮并单击_Html_Excel_Vba_Onclick_Intranet - Fatal编程技术网

Html 从onclick属性中查找按钮并单击

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

我正在使用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 = 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