1

我正在尝试在单击按钮时打开网页,转到特定部分,在单击下一个按钮箭头图像时遍历多个页面。

我必须从这个网站上提取信息。页面的HTML结构是:

<div>
 <div>
  <table class="A">
   <tbody>
    <tr>
     <td class="B">
      <div class="C">
       <ul id="D" class="E">
        <li id="W" class="T U"></li>
        <li id="X" class="T U "></li>
        <li id="Y" class="T U"><span class="SPANCLASSNAME">HEADER TAB CAPTION</span></li>
        <li id="Z" class="T U"></li>
       </ul>
      </div>
     </td>
    </tr>
   </tbody>
  </table>  
 </div>
</div>

我需要的所有数据都可以在任何li元素下。在这里,我将它放在第三个li元素下。

Private Sub Button_Click()
    Dim IE As Object    
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    IE.Navigate "URL"

    Do
        DoEvents
    Loop Until IE.ReadyState = 4

    Set AllSpanElements = IE.Document.getElementsByClassName("SPANCLASSNAME")
    For Each span In AllSpanElements
        MsgBox span.innerText
        If span.innerText = "HEADER TAB CAPTION" Then
            MsgBox span.innerText
                span.Click  'DOES NOT WORK. WHAT SHOULD BE THE CODE HERE?
            Exit For
        End If
    Next    
    MsgBox "Operation Completed"
End Sub

我能够打开网页,并且 MsgBox 显示来自所有li元素的文本,并且流程到达操作完成,但单击操作不会发生。

什么代码会将点击操作发送到 IE?

4

3 回答 3

0

我相信会是

span.onclick();
// or
span.fireEvent('onclick');

(不带分号)

已添加如果不是 JS 附加事件,请尝试

span.click()
于 2013-07-13T20:13:07.947 回答
0

如果跨度附加了 javascript 事件,则下面的代码可能会起作用。

 span.FireEvent("click()")
于 2013-07-13T19:25:42.950 回答
0

我无法在不知道 URL 的情况下对其进行测试,但下面是我想出的代码:

Public Sub sampleCode()
Dim IE As InternetExplorer
Dim HTMLDoc As HTMLDocument
Dim AllSpanElements As IHTMLElementCollection
Dim spanCounter As Long
Dim targetSpan As HTMLObjectElement

Set IE = New InternetExplorer
With IE
    .Visible = True
    .Navigate "URL"
    Do While .Busy Or .ReadyState = READYSTATE_LOADING: Wend
    Set HTMLDoc = .document
End With

Set AllSpanElements = HTMLDoc.getElementsByTagName("li")
For spanCounter = 0 To AllSpanElements.Length - 1
    With AllSpanElements(spanCounter)
        MsgBox (.innerText)
        If .innerText = "HEADER TAB CAPTION" Then
            MsgBox (.innerText)
            .Click
            Exit For
        End If
    End With
Next

IE.Quit
Set IE = Nothing
MsgBox "Operation Completed"

End Sub

希望这会有所帮助,TheSilkCode

于 2017-02-04T00:50:50.940 回答