You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取HTML中包含指定CSS值的所有元素ID并存入列表

问题根源

你当前代码存在两个核心错误,才会导致重复获取同一个ID:

  • 统计匹配元素总数时错误使用了By.TagName("My_Value"),TagName对应的是HTML原生标签名(比如div、p、button),你的统计逻辑本身就和要匹配的带My_Value样式类的元素不符
  • 循环内每次都调用driver.FindElement(By.CssSelector("div.My_Value")),这个API的默认特性就是返回第一个匹配到的元素,所以不管循环执行多少次,每次取的都是同一个首个元素,自然只会重复返回第一个ID

修复方案

不需要单独统计数量再循环,直接一次性获取所有匹配的元素集合,遍历集合逐个提取ID即可:

List<string> MyList = new List<string>();
// 一次性获取所有带有My_Value样式类的div元素集合
var targetElements = driver.FindElements(By.CssSelector("div.My_Value"));

foreach(var element in targetElements)
{
    // 逐个提取元素ID加入列表
    string id = element.GetAttribute("id");
    // 可选判断:过滤掉没有设置ID的元素,避免列表存入空值
    if(!string.IsNullOrEmpty(id))
    {
        MyList.Add(id);
    }
}

简化写法

如果你的项目支持Linq语法,可以直接用链式调用一步拿到结果:

List<string> MyList = driver.FindElements(By.CssSelector("div.My_Value"))
    .Select(element => element.GetAttribute("id"))
    .Where(id => !string.IsNullOrEmpty(id))
    .ToList();

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:15:03