0

嗨,我第一次使用 PuppeteerSharp,想知道 EvaulateExpressionAsync 是否支持转换为复杂 c# 对象的方法。所以当我尝试做这样的事情时:

var allResultsSelector = ".sortableTable.resultTable tr.studyResultRow";

var jsSelectAllAnchors = $"Array.from(document.querySelectorAll('{allResultsSelector}')).map(f=>f.innerText);";

await frmSearch.WaitForSelectorAsync(allResultsSelector);

var urls = await frmSearch.EvaluateExpressionAsync<InteleStudyResult[]>(jsSelectAllAnchors);

c# 现在输入

    public class InteleStudyResult
    {
        public string PatientName { get; set; }
        //public string PatientId { get; set; }
        //public DateTime DOB { get; set; }
        //public string Sex { get; set; }
        //public string Accession { get; set; }
        //public DateTime StudyDate { get; set; }
        //public string Modality { get; set; }
        //public int? Series { get; set; }
        //public string StudyDescription { get; set; }
    }

Eval 调用发生异常

Newtonsoft.Json.JsonSerializationException HResult=0x80131500 Message=将值“我的字符串”转换为“InteleradWebAccessor.InteleStudyResult”时出错。路径“[0]”。来源=Newtonsoft.Json

内部异常 1:ArgumentException:无法从 System.String 转换或转换为 InteleradWebAccessor.InteleStudyResult。

如果这不受支持,我将非常感谢有关使用 PuppeteerSharp 处理将 html 表行转换为 ac# 复杂类型的最佳方法的建议

4

1 回答 1

1

您应该在地图中添加一个对象

Array.from(document.querySelectorAll('{allResultsSelector}'))
   .map(f =>{ return { patientName: f.innerText} });
于 2020-04-01T15:05:21.683 回答