【问题标题】:How to check if a text exist in IE webpage under div class/TR/TD Class?如何检查 IE 网页中是否存在 div 类/TR/TD 类下的文本?
【发布时间】:2019-01-11 00:45:43
【问题描述】:

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

很遗憾,我无法提供我拥有的网页的 URL,因为它需要登录名和密码 - 我无法分享。

我有 VBA 代码已经完成了所有工作,登录到网页 - 证明页面内的正确信息并单击验证按钮。但问题是我应该看看下面的文字是否出现: ENQUADRAMMENTO 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 

'继续取决于是否以不同的方式找到文本

【问题讨论】:

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


    【解决方案1】:

    ENQUADRAMENTO EM VIGOR.innerText 值而不是类名。类值为fieldValue,并与td(表格单元格)元素相关联。

    如果它只发生一次,这很容易。使用 Instr 查看页面 html 中是否存在

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

    否则,您可以使用该类名收集td 元素中的nodeList 并循环测试.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
    

    【讨论】:

    • 这个 " If Instr(ie.document.body.innerHTML,"ENQUADRAMENTO EM VIGOR") > 0 Then " 完美运行!非常感谢!!
    【解决方案2】:

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

    【讨论】:

    • 感谢您的代码,我尝试了 QHarr 的其他代码,它已经解决了我的问题。谢谢
    猜你喜欢
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 2018-10-26
    • 2020-11-16
    相关资源
    最近更新 更多