我正在使用VBA并试图触发 HTML PAGE 中的下载按钮,该按钮会检查以下代码:
<input onClick="javascript:__dopostback('GridView1','Accountnumber$0')" type="button" value="Download"></input>
此页面上存在多个下载按钮,我想点击第一个。
在这些元素中,唯一的属性是:
"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
答案 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
方法:
然后,而不是使用:
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。