You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在Robot Framework RIDE GUI中统计页面特定文本(排除链接及标题)出现次数的方法

在Robot Framework RIDE中统计页面特定文本出现次数(排除链接和标题)

嘿,这个需求其实可以通过结合SeleniumLibrary的JavaScript执行能力和文本统计工具来实现,我给你一步步拆解具体操作:

前提准备

首先确保你的RIDE项目里已经导入了两个核心库:

  • SeleniumLibrary:用来操作浏览器和网页元素
  • String:(可选)提供现成的文本统计关键字,也可以用Python原生的字符串方法替代

具体测试用例实现

下面是针对维基百科目标页面的完整测试用例,我会逐行解释逻辑:

*** Settings ***
Library    SeleniumLibrary
Library    String

*** Test Cases ***
Count "fruit" Occurrences Excluding Links & Headings
    # 1. 打开目标页面
    Open Browser    https://en.wikipedia.org/wiki/Avocado_sunblotch_viroid    Chrome
    # 2. 用JS提取所有非链接、非标题的文本内容
    # 这里只定位维基百科主内容区域(div.mw-content-ltr),避免统计侧边栏/导航栏的无关内容
    ${filtered_text}    Execute JavaScript    return Array.from(document.querySelector('div.mw-content-ltr').querySelectorAll('*:not(a):not(h1):not(h2):not(h3):not(h4):not(h5):not(h6)')).map(el => el.textContent.trim()).join(' ');
    # 3. 统计"fruit"的出现次数(区分大小写)
    ${occurrence_count}    Count String Occurrences    ${filtered_text}    fruit    case_insensitive=${False}
    # 4. 打印结果
    Log    单词"fruit"在页面主内容(排除链接和标题)中出现了${occurrence_count}次
    # 5. 关闭浏览器
    Close Browser

关键逻辑解释

  1. JS筛选文本的原理

    • document.querySelector('div.mw-content-ltr')定位到维基百科的主内容区域,避免统计页面其他无关部分
    • querySelectorAll('*:not(a):not(h1):not(h6)')选择所有不是链接(a标签)和标题(h1-h6标签)的元素
    • 最后把这些元素的文本内容提取、去空格后拼接成一个完整字符串
  2. 统计次数的两种方式

    • 如果你导入了String库,用Count String Occurrences关键字可以直接统计,还支持大小写不敏感(把case_insensitive设为${True}即可)
    • 也可以用Python原生的count方法替代,代码如下:
      ${occurrence_count}    Evaluate    "${filtered_text}".count("fruit")
      

可选优化

如果需要更精准的筛选(比如排除某些特定区域),可以调整JS里的元素选择器,比如只统计段落(p标签)里的文本,把querySelectorAll的参数改成p:not(a)即可。

内容的提问来源于stack exchange,提问作者Jonel

火山引擎 最新活动