0

我正在尝试单击网页上的锚元素。我正在使用这段代码:

 For each anchor in HTMLDoc.anchors
      If anchor.onclick = "validateForm(frmSearchEntry)" Then
           anchor.click
           exit for
      End if
 Next anchor

这是html的片段:

<tr>
    <td height="35" align="right" nowrap>
    <input type="hidden" name="aisposm01formReset" value="">        
    <a href="#" onclick="return resetForm(frmSearchEntry)"><img src="/Settlement/static/images/pbs/funcreset.gif" border="0"></a>&nbsp;&nbsp;
    <a href="#" onclick="validateForm(frmSearchEntry)"><img src="/Settlement/static/images/pbs/funcsearch.gif" border="0" alt=""></a></td>
    </tr>
    <tr>
       <td valign="bottom" nowrap>
         <table>
            <tr><td name="txtErrorMessage" class="error"></td></tr>
         </table>
       </td>
</tr>

但是,由于某种原因,当我尝试执行代码时,它只是飞过 for next 循环,就好像页面上的任何地方都没有锚元素一样。我不太确定我在这里做错了什么。

4

1 回答 1

0

更新以反映评论中提到的问题的答案

您试图找到的元素实际上并不是锚。有关如何在 html 中实现锚点的说明,请参阅此链接。锚点看起来像这样<a name="anchor"></a>,您可以像这样创建指向它的链接<a href="#anchor">click here</a>

相反,我可以HTMLDoc.GetElementsByTagName("A")用来获取所有链接,然后遍历这些链接。.getAttribute确保根据如下所述的功能执行检查。


.OnClick函数返回一个指向每个msdn的事件处理函数的指针。您可能想要的是.getAttribute(strAttributeName As String, Optional lFlags As Long)msdn)。

尝试(未测试):

For each linkelement in HTMLDoc.GetElementsByTagName("a")   'As noted above
      If linkelement.getAttribute("OnClick") = "validateForm(frmSearchEntry)" Then
           linkelement.click
           exit for
      End if
Next anchor

如果这不能立即起作用,请在 If 语句上放置一个断点并检查anchor.getAttribute("OnClick")Watch Window 中的值。

于 2013-11-07T22:53:00.147 回答