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

C# Selenium如何获取id为div-f2qqs的元素下所有子元素的outerHTML

C# Selenium 获取指定父元素下所有子元素outerHTML的实现方案

方案1:原生Selenium API遍历实现(兼容性最优)

直接通过Selenium自带的元素查询、属性读取接口实现,无需依赖JS执行,适配所有Selenium支持的浏览器。

using OpenQA.Selenium;
using System.Collections.Generic;

// 此处省略驱动初始化逻辑,使用你现有项目中的driver实例即可
// 1. 定位目标父元素
IWebElement parentDiv = driver.FindElement(By.Id("div-f2qqs"));

// 2. 查询所有直接子元素:XPath ./* 匹配当前节点下的所有直接子节点
// *若需要获取所有层级的后代元素,将XPath改为 .//* 即可
IReadOnlyCollection<IWebElement> childElements = parentDiv.FindElements(By.XPath("./*"));

// 3. 遍历读取每个子元素的outerHTML
List<string> allChildOuterHtml = new List<string>();
foreach (IWebElement child in childElements)
{
    allChildOuterHtml.Add(child.GetAttribute("outerHTML"));
}

方案2:JS执行实现(性能最优,适合子元素数量多的场景)

直接在浏览器侧执行JS批量获取结果,减少驱动和浏览器的通信次数,运行效率更高。

using OpenQA.Selenium;
using System.Collections.Generic;

IWebElement parentDiv = driver.FindElement(By.Id("div-f2qqs"));
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;

// 执行JS直接返回所有直接子元素的outerHTML数组
// *若需要获取所有层级的后代元素,将 arguments[0].children 改为 arguments[0].querySelectorAll('*') 即可
List<string> allChildOuterHtml = js.ExecuteScript(@"
    return Array.from(arguments[0].children).map(item => item.outerHTML);
", parentDiv) as List<string>;

注意事项

  • 两种方案默认都是获取直接子元素的outerHTML,需要全量后代元素可参考代码内注释修改参数即可
  • outerHTML是DOM原生属性,Selenium读取时不需要额外做转义处理,返回结果和页面实际DOM结构完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:45:03