如何检查div类/ TR / TD类下的IE网页中是否存在文本?

时间:2019-01-10 12:06:29

标签: html excel vba internet-explorer web-scraping

我已经尝试了几天的解决方案-不知何故,我只是设法找到一个可行的解决方案。

不幸的是,我无法提供所拥有网页的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 :(得分:1)

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

答案 1 :(得分:0)

$(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>