Как в vba нажать на ссылку на веб-странице - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь автоматизировать вход на сайт.До сих пор мне удалось позволить сценарию ввести имя пользователя и пароль, а также нажать кнопку входа в систему.Это прекрасно работает, и я зашел на сайт.Следующим шагом будет нажать на некоторые ссылки, чтобы перейти на нужную страницу, где я могу ввести поисковые данные, которые нужны сайту для поиска данных для меня.

Это 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 голосов
/ 15 ноября 2018

Ссылка должна выбираться по

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-файл, чтобы увидеть ifparent фрейм / тэг iframe, внутри которого вы нашли элемент.

В этом случае вам может понадобиться синтаксис, подобный следующему:

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

Используйте 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
...