PuppeteerSharp оценить выражение для сложного типа? - PullRequest
0 голосов
/ 01 апреля 2020

Привет! Я впервые использую PuppeteerSharp и мне интересно, поддерживает ли EvaulateExpressionAsyn c способ преобразования в сложный 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# type на данный момент

    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 Сообщение = Ошибка преобразования значения «моя строка здесь» в тип «InteleradWebAccessor.InteleStudyResult». Путь '[0]'. Source = Newtonsoft. Json

Внутреннее исключение 1: ArgumentException: Не удалось привести или преобразовать из System.String в InteleradWebAccessor.InteleStudyResult.

Если это не поддерживается, я очень признателен предложение о наилучшем способе обработки получения строки таблицы html в сложный тип c# с использованием PuppeteerSharp

1 Ответ

0 голосов
/ 01 апреля 2020

Вы должны объект на вашей карте

Array.from(document.querySelectorAll('{allResultsSelector}'))
   .map(f =>{ return { patientName: f.innerText} });
...