Я пытаюсь щелкнуть элемент привязки на веб-странице. Я использую этот код:
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>
<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>
Однако по какой-то причине, когда я пытаюсь выполнить код, он просто летает прямо над следующим циклом, как если бы на странице не было элементов привязки. Я не совсем уверен, что я здесь делаю неправильно.
Обновлено, чтобы отразить ответ на вопрос, отмеченный в комментариях
Элементы, которые вы пытаетесь найти, на самом деле не являются якорями. См. Эту ссылку для описания того, как анкеры реализованы в html. Якорь выглядит как <a name="anchor"></a>
и вы создали бы ссылку на него так <a href="#anchor">click here</a>
.
Вместо этого я мог бы использовать HTMLDoc.GetElementsByTagName("A")
чтобы получить все ссылки, а затем повторить их. Убедитесь, что вы выполнили проверку на .getAttribute
функции .getAttribute
как указано ниже.
Функция .OnClick
возвращает указатель на функцию обработки событий на msdn. Вместо этого вы, скорее всего, захотите: .getAttribute(strAttributeName As String, Optional lFlags As Long)
(msdn).
Попробуйте (UNTESTED):
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
Если это не сработает сразу, поместите контрольную anchor.getAttribute("OnClick")
в оператор If и проверьте значение anchor.getAttribute("OnClick")
в окне просмотра.