Как проверить, существует ли текст на веб-странице IE в классе div / TR / TD Class? - PullRequest
0 голосов
/ 10 января 2019

Я уже несколько дней пытаюсь найти решение своей проблемы - почему-то мне просто не удается найти работающее решение.

К сожалению, я не могу дать URL-адрес имеющейся у меня веб-страницы, так как для этого потребуются логин и пароль, которыми я не могу поделиться.

У меня уже есть код VBA, который делает все для меня, войдите на веб-страницу - проверьте правильность информации на странице и нажмите кнопку «Подтвердить» Но проблема в том, что я должен посмотреть, появляется ли ниже текст: ENQUADRAMENTO EM VIGOR - если да, я продолжу немного по-другому, а если нет, то по-другому.

Ниже приведен код с веб-страницы:

            <tr>
                <td>
                    <table cellpadding="4" border="0" width="100%">
                        <tbody><tr>
                            <td class="fieldTitleBold" style="width=30%">Enquadramento em IVA</td>

                            <td class="fieldValue" colspan="3">NORMAL TRIMESTRAL</td>

                        </tr>
                        <tr>
                            <td style="width=10%" class="fieldTitleBold">Situação</td>

                            <td class="fieldValue" colspan="3">ENQUADRAMENTO EM VIGOR</td>

                        </tr>

                    </tbody></table>                        
                </td>
            </tr>

Я пробовал много разных способов, и последнее, что я пробовал, было с byclassname (это работало для меня на другом веб-сайте с аналогичной целью), но по какой-то причине здесь не работает:

Set doc = ie.document
Set htmTable = doc.getElementsByClassName("ENQUADRAMENTO EM VIGOR")(0)
If Not htmTable Is Nothing Then 

'продолжить в зависимости от того, был ли текст найден или нет по-разному

Ответы [ 2 ]

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

ENQUADRAMENTO EM VIGOR - это значение .innerText, а не имя класса. Значение класса fieldValue и связано с элементом td (ячейка таблицы).

Это довольно легко, если это происходит только один раз. Используйте Instr, чтобы увидеть, присутствует ли он на странице html

If Instr(ie.document.body.innerHTML,"ENQUADRAMENTO EM VIGOR") > 0 Then

В противном случае вы можете собрать nodeList из td элементов с этим именем класса и проверить цикл .innerText

Dim classes As Object, i As Long
Set classes = ie.document.querySelectorAll("td.fieldValue")
For i = 0 To classes.Length - 1
   If classes.item(i).innerText = "ENQUADRAMENTO EM VIGOR" Then
       'do something
       'Exit For ....
   End If
End Sub
0 голосов
/ 10 января 2019

$(document).ready(function() { 

    var lenfV = document.querySelectorAll(".fieldValue");
    for(let i=0;i<lenfV.length;i++) {
      if(lenfV[i].innerHTML == "ENQUADRAMENTO EM VIGOR") {
          console.log("is there");
      }
      //else {console.log(213423);}
    }

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p> I think, The below option will help you</p>
<table>

<tr>
                <td>
                    <table cellpadding="4" border="0" width="100%">
                        <tbody><tr>
                            <td class="fieldTitleBold" style="width=30%">Enquadramento em IVA</td>

                            <td class="fieldValue" colspan="3">NORMAL TRIMESTRAL</td>

                        </tr>
                        <tr>
                            <td style="width=10%" class="fieldTitleBold">Situação</td>

                            <td class="fieldValue" colspan="3">ENQUADRAMENTO EM VIGOR</td>
                        </tr>

                    </table>                        
                </td>
            </tr>
</table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...