从onclick属性中找到按钮,然后单击

时间:2017-04-05 11:26:02

标签: html excel-vba onclick buttonclick intranet

我正在使用VBA并试图触发 HTML PAGE 中的下载按钮,该按钮会检查以下代码:

<input onClick="javascript:__dopostback('GridView1','Accountnumber$0')" type="button" value="Download"></input>

此页面上存在多个下载按钮,我想点击第一个。

enter image description here

在这些元素中,唯一的属性是:

"OnClick=javascript:__dopostback('GridView1','Accountnumber$0')"

但我不知道如何使用以下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 

1 个答案:

答案 0 :(得分:1)

有趣的是,您正在调用this.mousemove = function (ev) { if (tool.started && checkboxSquare.checked) { // other code context.clearRect(0, 0, canvas.width, canvas.height); // clear canvas // draw each square in the squares array after clearning the canvas squares.forEach(function(square) { context.beginPath(); context.rect(square.x, square.y, square.width, square.height); }); context.beginPath(); var width = mousex - last_mousex; var height = mousey - last_mousey; context.rect(last_mousex, last_mousey, width, height); context.stroke(); } }; ,但我无法在我的Microsoft HTML对象库(Win10 / Excel 2013)中找到此方法。

也许您可以尝试使用CSS选择器,而不是getElementsByXPath类的querySelector方法:

enter image description here

然后,而不是使用:

HTMLDocument

你可以试试这个(未经测试):

htmlDoc.getElementsByXpath("input[type=""button""]")(0).Click  <--(Not Working)

修改

看了一下页面源代码,并且符合OP语句:

  

此页面上存在多个“下载”按钮,我想点击第一个按钮。

然后我们可以将select简化为:

Dim strSelector As String
Dim objElement As Object

strSelector = "table#GridView1 > tbody > tr > td > input[onclick=""javascript:__doPostBack('GridView1','Account_number$0')""]"

Set objElement = htmlDoc.querySelector(strSelector)
If Not objElement Is Nothing Then
    objElement.Click
Else
    MsgBox "Selector did not work!"
End If

其转换为查找表格主体中具有table#GridView1 > tbody > tr > td > input[onclick] 属性的第一个<input>

所以更新后的VBA是:

onclick

选择器在Chrome控制台中进行测试,因此我的假设是它应该以类似的方式在VBA中运行。 HTH。

enter image description here