C# 样式属性和值

C# 样式属性和值,c#,puppeteer,webautomation,puppeteer-sharp,C#,Puppeteer,Webautomation,Puppeteer Sharp,我正在提取HTMLDOM中每个元素的名称和值。对于只能提取特性名称而不能提取值的样式属性 我的代码如下: var elementHandles = await page.QuerySelectorAllAsync("a"); foreach (var handle in elementHandles) { var elementStyle = await handle.GetPropertyAsync("style"); var style = a

我正在提取
HTML
DOM
中每个元素的名称和值。对于只能提取特性名称而不能提取值的样式属性

我的代码如下:

var elementHandles = await page.QuerySelectorAllAsync("a");
    foreach (var handle in elementHandles)
    {
        var elementStyle = await handle.GetPropertyAsync("style");
        var style = await elementStyle.JsonValueAsync();
        var output = style.ToString();
    }   
这是我的输出:

{{
  "0": "font-family",
  "1": "font-size",
  "2": "line-height",
  "3": "color",
  "4": "text-align"
}}
这就是我所期待的:

font-family:Arial, Helvetica, sans-serif; 
font-size: 12px; 
line-height: 16px; 
color: #999999;
text-align: left

问题是如何序列化
CSSStyleDeclaration
。如果这就是Chromium决定序列化该对象的方式,那么我们对此无能为力

但是,我们可以尝试通过javascript使用
EvaluateFunctionAsync
来解决这个问题

foreach(elementHandles中的变量句柄)
{
var style=wait page.EvaluateFunctionAsync(
“e=>Object.entries(e.style).filter(i=>isNaN(i[0])&&i[1]).map(i=>{return{[i[0]]:i[1]}).reduce((acc,cur)=>{return{……acc,……cur},{}),handle);
var output=style.ToString();
}
让我们看看javascript表达式

e=>//我们发送HTML元素而不是style属性
entries(e.style)//我们从CSSStyleDeclaration对象获取所有属性/值对
//我们希望排除数字属性(如0,1,2)和空值
.filter(i=>isNaN(i[0])&&i[1])
//我们把它们变成物体
.map(i=>{return{[i[0]]:i[1]})
//我们将它们合并成一个对象,并返回给C#
.reduce((acc,cur)=>{return{…acc,…cur}},{})

请提供更多详细信息。这还不够,无法理解您遇到的问题。@UsmanKhan我在DOM中有5个锚元素,例如target=“\u blank”>单击此处,我正在木偶艺术中读取此元素的属性。上面的代码没有提取css类名及其值,例如“font-family:Arial、Helvetica、sans-serif”;而是返回“0”:“font-family”