如何使用Groovy统计页面特定元素数量并验证其数量多于1个?
用Groovy统计嵌套HTML中的指定元素数量
核心方案:结合Jsoup处理HTML解析
Groovy可以通过Jsoup库轻松处理嵌套HTML结构,Jsoup的选择器会自动匹配所有层级的目标元素,无需手动处理嵌套逻辑。
1. 引入依赖(Groovy脚本方式)
直接用@Grab快速引入Jsoup:
@Grab('org.jsoup:jsoup:1.17.2') import org.jsoup.Jsoup import org.jsoup.nodes.Document
2. 统计元素数量并验证
下面是完整示例,包含解析HTML、统计目标元素、验证数量是否大于1的逻辑:
// 示例HTML内容 def html = ''' <div> <div-list-holder> <list> <custom-list-item> list item 1 </custom-list-item> <custom-list-item> list item 2 </custom-list-item> <custom-list-item> list item 3 </custom-list-item> </list> </div-list-holder> </div> ''' // 解析HTML文档 Document doc = Jsoup.parse(html) // 统计所有层级的custom-list-item元素 int itemCount = doc.select("custom-list-item").size() // 输出统计结果 println "custom-list-item元素总数: $itemCount" // 验证数量是否多于1 if (itemCount > 1) { println "✅ custom-list-item元素数量大于1" } else { println "❌ custom-list-item元素数量不大于1" }
3. 封装成通用方法
如果需要复用,可以封装成类似WebUI.countOfElementsPresent的工具方法:
@Grab('org.jsoup:jsoup:1.17.2') import org.jsoup.Jsoup import org.jsoup.nodes.Document /** * 统计HTML中指定元素的数量(支持嵌套结构) * @param htmlContent HTML内容字符串 * @param elementName 目标元素标签名 * @return 元素数量 */ int countOfElementsPresent(String htmlContent, String elementName) { Document doc = Jsoup.parse(htmlContent) return doc.select(elementName).size() } // 使用示例 def targetHtml = '''你的HTML内容''' int count = countOfElementsPresent(targetHtml, "custom-list-item") println "元素数量: $count" // 验证数量是否大于1 if (count > 1) { // 执行后续逻辑 }
说明
- Jsoup的
select(elementName)会匹配文档中所有层级的目标元素,不管嵌套深度,完美解决嵌套结构的统计问题。 - 如果是从文件或URL加载HTML,可以用
Jsoup.parse(new File("path/to/file.html"))或Jsoup.connect("https://example.com").get()替代字符串解析。
内容的提问来源于stack exchange,提问作者Kieta
相关产品推荐
相关产品推荐

