我正在编写一个vba脚本,旨在从用户获取股票代码,导航到网站,输入股票代码并单击相应的链接。不幸的是,我在点击链接时遇到了麻烦。我已经研究了这个StackOverflow question and response,但是,我没有使用的非文本值。我也花了一个小时在网上研究潜在的解决方案而没有任何运气。
我的VB脚本如下:
Sub clicklick()
Dim ie As Object
Dim form As Variant, button As Variant
Set ie = CreateObject("InternetExplorer.Application")
ticker = InputBox("Enter Ticker Symbol: ")
With ie
.Visible = True
.Navigate ("http://www.SITE_URL.com")
While ie.ReadyState <> 4
DoEvents
Wend
ie.document.getElementsbyName("sSrchTerm").Item.innertext = ticker
End With
End Sub
我想点击的链接在页面来源中显示如下:
<a class="hqt_button" href="javascript:void(0): onclick=HeaderBox.trySubmit()"></a>
任何人都可以告诉我如何点击链接。该元素似乎没有名称,innertext或id,所以我不知道如何到达它。
编辑:
Set Link = ie.document.getElementsByTagName("a")
For Each l In Link
If Link.classname = "hqt_button" Then
Link.Click
Exit For
End If
Next l
答案 0 :(得分:6)
尝试获取锚标记的集合,其中包含:
GetElementsByTagName("a")
然后,使用尽可能多的逻辑迭代该集合,以确保您单击右键。
For each l in ie.document.getElementsByTagName("a")
If l.ClassName = "hqt_button" Then
l.Click
Exit For
Next
如果有多个具有相同类名的锚,您可以这样做:
If l.ClassName = "hqt_button" AND l.Href = ""javascript:void(0): onclick=HeaderBox.trySubmit()" Then
l.Click
Exit For
Next
<强>替代地强>
如果您使用的是IE9 +,则可以使用GetElementsByClassName
方法。
GetElementsByClassName("hqt_button")
答案 1 :(得分:1)
您还可以使用CSS selector的
a.hqt_button[href='javascript:void(0): onclick=HeaderBox.trySubmit()']
"."
表示className。 []
包含一个属性。上面说的是hqt_button
标签内具有属性href
且值为'javascript:void(0): onclick=HeaderBox.trySubmit()'
的className a
。
CSS查询:
VBA中的语法:
CSS选择器通过HTMLDocument的[.querySelector][2]
方法应用。
ie.document.querySelector("a.hqt_button[href='javascript:void(0): onclick=HeaderBox.trySubmit()']").Click