我正在尝试自动在网站上登录。到目前为止,我设法让脚本键入了用户名和密码,还单击了登录按钮。这个工作正常,我已经登录到该网站。 下一步是单击一些链接以转到正确的页面,在该页面上我可以输入站点需要的搜索数据,以供我查找。
这是所涉及标签的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
什么是正确的方法?
答案 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