如何在VBA中单击网页上的链接

时间:2018-11-15 12:58:49

标签: vba web hyperlink click

我正在尝试自动在网站上登录。到目前为止,我设法让脚本键入了用户名和密码,还单击了登录按钮。这个工作正常,我已经登录到该网站。 下一步是单击一些链接以转到正确的页面,在该页面上我可以输入站点需要的搜索数据,以供我查找。

这是所涉及标签的HTML代码:

<a title="Klik hier voor de dienst Kadaster-on-line" class="serviceAvailable" href="https://kadaster-on-line.kadaster.nl/default.asp" target="_self" ng-if="!menuItem.items" ng-repeat-start="menuItem in menuItems">Kadaster-on-line</a>

我一直试图让VBA单击链接,但无法正确进入。这是我最近的尝试:

Set alle_keuzes = IE.document.getElementsByTagName("a")

For Each keuze_voor_kadaster In alle_keuzes        
    If keuze_voor_kadaster.getAttribute("title") = "Klik hier voor de dienst Kadaster-on-line" Then
        keuze_voor_kadaster.Click
        Exit For
    End If
Next keuze_voor_kadaster

什么是正确的方法?

1 个答案:

答案 0 :(得分:2)

链接应由

选择
ie.document.querySelector("a[title='Klik hier voor de dienst Kadaster-on-line']").click

您也可以尝试:

ie.document.querySelector("a[title='Klik hier voor de dienst Kadaster-on-line']").FireEvent "onclick"

如果遇到未设置/发现对象错误,则:

1)检查html以查看是否在其中找到了元素的父帧/ iframe标签。

在这种情况下,您可能需要类似以下语法:

ie.document.document.getElementsByTagName("frame")(frameIndexGoesHere).contentDocument.querySelector("a[title='Klik hier voor de dienst Kadaster-on-line']")

如果框架/ iframe具有ID,请使用getElementById

2)检查您等待了足够长的时间,然后才能单击该元素。如果是这种情况,请确保您具有以下用于页面加载的内容,并有一个循环等待元素出现:

导航到URL后

While ie.Busy Or ie.readyState < 4: DoEvents: Wend

Const MAX_WAIT_SEC As Long = 5
Dim ele As Object, t As Date
t = Timer
Do
    DoEvents
    On Error Resume Next
    Set ele = ie.document.querySelector("a[title='Klik hier voor de dienst Kadaster-on-line']")
    On Error GoTo 0
    If Timer - t > MAX_WAIT_SEC Then Exit Do
Loop While ele Is Nothing

If Not ele Is Nothing Then ele.Click