点击图片或图片后面的link
Click on picture or link behind it
您好,我有一个宏,它应该可以点击网页上的按钮。问题是这段代码后面没有 ID。它的内联网网页。
我的代码开始
Set IE = New InternetExplorerMedium
IE.Navigate = "some website"
While IE.ReadyState <> READYSTATE_COMPLETE
DoEvents
Wend
IE.Visible = True
IE.document.getElementById("CategoryCombo").Value = "78"
IE.document.getElementById("CategoryCombo").FireEvent ("onchange")
'~~> wait until element is present on web page
Do
Set ieobj = Nothing
On Error Resume Next
Set ieobj = IE.document.getElementById("text1265")
DoEvents
Loop Until Not ieobj Is Nothing
'~~> search box
IE.document.getElementById("text1265").Value = "some value"
'~~> button click example
IE.document.getElementById("subBtn").Click
部分网站代码
<a title="View document" href="javascript:FSResults_fsopenWindow('index.fsp?pn=DOLViewDocument&d=78&q=78-17158635-1&o=78-17158635-1&p=DOCUMENT_NAME#ensureVisible')" onclick="fsCancelEvent(event)"><img border="0" alt="View document" align="absmiddle" src="Images/DocTypes/PDF.gif"></a>
我试过了
IE.document.getElementByTitle("View document").FireEvent ("onclick")
我也试过了
IE.document.getElementByTagName("a").FireEvent ("onclick")
谢谢
I also tried
IE.document.getElementByTagName("a").FireEvent ("onclick")
这应该对你有用,但你遗漏了一些东西。您需要指定要查找的 <a>
标签,因此 .getElementsByTagName("a")
变为 .getElementsByTagName("a")(i)
,其中 i
是您要查找的标签的索引(您得到通过按顺序计算 HTML 中每个 <a>
标记的索引,从 0 开始)。
索引是必需的,因为 .getElementsByTagName("tagName")
returns 一个数组,而不是单个值。
最后我想到了这个。谢谢你的帮助 Nicholas Kemp,你的回答让我朝着正确的方向前进
Set elements = IE.document.getElementsByTagName("a")
For Each element In elements
If Left(element, 33) = "javascript:FSResults_fsopenWindow" Then
Debug.Print element
IE.Navigate element
End If
Next
您可以使用 CSS 选择器。
例如属性选择器
ie.document.querySelector("[title='View document']").Click
或通过其值定位 href 的相同方法
ie.document.querySelector("[href*=fsopenWindow]").Click
最后一个查找包含'fsopenWindow'
的href
这两个都避免循环遍历元素集合并使用 CSS 所以速度更快。
您好,我有一个宏,它应该可以点击网页上的按钮。问题是这段代码后面没有 ID。它的内联网网页。
我的代码开始
Set IE = New InternetExplorerMedium
IE.Navigate = "some website"
While IE.ReadyState <> READYSTATE_COMPLETE
DoEvents
Wend
IE.Visible = True
IE.document.getElementById("CategoryCombo").Value = "78"
IE.document.getElementById("CategoryCombo").FireEvent ("onchange")
'~~> wait until element is present on web page
Do
Set ieobj = Nothing
On Error Resume Next
Set ieobj = IE.document.getElementById("text1265")
DoEvents
Loop Until Not ieobj Is Nothing
'~~> search box
IE.document.getElementById("text1265").Value = "some value"
'~~> button click example
IE.document.getElementById("subBtn").Click
部分网站代码
<a title="View document" href="javascript:FSResults_fsopenWindow('index.fsp?pn=DOLViewDocument&d=78&q=78-17158635-1&o=78-17158635-1&p=DOCUMENT_NAME#ensureVisible')" onclick="fsCancelEvent(event)"><img border="0" alt="View document" align="absmiddle" src="Images/DocTypes/PDF.gif"></a>
我试过了
IE.document.getElementByTitle("View document").FireEvent ("onclick")
我也试过了
IE.document.getElementByTagName("a").FireEvent ("onclick")
谢谢
I also tried
IE.document.getElementByTagName("a").FireEvent ("onclick")
这应该对你有用,但你遗漏了一些东西。您需要指定要查找的 <a>
标签,因此 .getElementsByTagName("a")
变为 .getElementsByTagName("a")(i)
,其中 i
是您要查找的标签的索引(您得到通过按顺序计算 HTML 中每个 <a>
标记的索引,从 0 开始)。
索引是必需的,因为 .getElementsByTagName("tagName")
returns 一个数组,而不是单个值。
最后我想到了这个。谢谢你的帮助 Nicholas Kemp,你的回答让我朝着正确的方向前进
Set elements = IE.document.getElementsByTagName("a")
For Each element In elements
If Left(element, 33) = "javascript:FSResults_fsopenWindow" Then
Debug.Print element
IE.Navigate element
End If
Next
您可以使用 CSS 选择器。
例如属性选择器
ie.document.querySelector("[title='View document']").Click
或通过其值定位 href 的相同方法
ie.document.querySelector("[href*=fsopenWindow]").Click
最后一个查找包含'fsopenWindow'
这两个都避免循环遍历元素集合并使用 CSS 所以速度更快。