VBA проверяет оповещение на веб-странице в <li></li> и запускает Sub, если обнаружен - PullRequest
0 голосов
/ 17 января 2019

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

<div class="text" id="vs" style="left: 908px; top: 97px; width: 391px; color: red; position: absolute; z-index: 251;">
    <ul><li>Has Duplicated Billed Line Item(s).</li></ul>
</div>

Это то, что я имею до сих пор, но красный вар не заполняет

Set allalert = appIE.document.getElementById("vs").getElementsByTagName("li")
For Each alert In allalert
If alert = "Has Duplicated Billed Line Item(s)." Then
 Call Dupe_Bill_process
Next alert

Любая помощь будет принята с благодарностью, и благодаря всем, кто помогает мне в этом процессе обучения, у меня все хорошо получается, lol

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Вам нужно сравнить со свойством .innerText, поскольку вы сравниваете с объектом в настоящее время. Вы также можете удалить устаревшее ключевое слово call.

Set allalert = appIE.document.getElementById("vs").getElementsByTagName("li")
For Each alert In allalert
If alert.innerText = "Has Duplicated Billed Line Item(s)." Then
    Dupe_Bill_process
    'Exit For ''?
Next alert

Вы можете захотеть Exit For, если хотите выйти сразу после первого матча. Или просто используйте appIE.document.getElementById("vs").getElementsByTagName("li")(0)


Я бы также рассмотрел простой сбор списка узлов с использованием селекторов css. Поскольку вы используете настоящий браузер, это должно быть быстрее.

#vs > ul

То есть:

Dim nodeList As Object, i As Long
Set nodeList = ie.document.querySelectorAll("#vs > ul")
For i = 0 to nodeList.Length-1
    If nodeList.item(i).innerText = "Has Duplicated Billed Line Item(s)." Then
        Dupe_Bill_process
    End If
Next

Если вы заботитесь только о первом совпадении, код просто становится:

If ie.document.querySelector("#vs > ul").innerText = "Has Duplicated Billed Line Item(s)." Then
    Dupe_Bill_process
End If
0 голосов
/ 17 января 2019

Вам нужно будет ссылаться на innerText элементов, которые вы пытаетесь проверить.

If alert.innerText = "Has Duplicated Billed Line Item(s)." Then
    Call Dupe_Bill_process
Next alert
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...