Как использовать PuppeteerSharp, чтобы получить значение performance.timeOrigin? - PullRequest
0 голосов
/ 15 марта 2020

Используя PuppeteerSharp, я пытаюсь получить значение performance.timeOrigin, используя приведенный ниже код C#:

JToken performanceTimeOriginString = await _page.EvaluateFunctionAsync("JSON.stringify(performance.timeOrigin);").ConfigureAwait(false);

Я убедился, что это работает в консоли JavaScript: enter image description here

Однако, когда я запускаю приведенный выше код PuppeteerSharp, я получаю следующее исключение:

System.AggregateException: One or more errors occurred. (Evaluation failed: SyntaxError: Unexpected token ';') ---> PuppeteerSharp.EvaluationFailedException: Evaluation failed: SyntaxError: Unexpected token ';'
at PuppeteerSharp.ExecutionContext.ExecuteEvaluationAsync(String method, Object args)
at PuppeteerSharp.ExecutionContext.RemoteObjectTaskToObject[T](Task`1 remote)
at PuppeteerSharp.DOMWorld.EvaluateFunctionAsync[T](String script, Object[] args)
--- End of inner exception stack trace ---

Мне было сказано удалить точку с запятой (очень странно), поэтому Я попробовал это, но затем получил следующее исключение.

System.AggregateException: One or more errors occurred. (Protocol error (Runtime.callFunctionOn): Given expression does not evaluate to a function) ---> PuppeteerSharp.EvaluationFailedException: Protocol error (Runtime.callFunctionOn): Given expression does not evaluate to a function ---> PuppeteerSharp.MessageException: Protocol error (Runtime.callFunctionOn): Given expression does not evaluate to a function
at PuppeteerSharp.CDPSession.SendAsync(String method, Object args, Boolean waitForCallback)
at PuppeteerSharp.CDPSession.SendAsync[T](String method, Object args)
at PuppeteerSharp.ExecutionContext.ExecuteEvaluationAsync(String method, Object args)
--- End of inner exception stack trace ---

Как я могу использовать PuppeteerSharp, чтобы получить значение performance.timeOrigin?

1 Ответ

2 голосов
/ 15 марта 2020

Вы должны использовать EvaluateExpressionAsync.

_page.EvaluateExpressionAsync("JSON.stringify(performance.timeOrigin)").ConfigureAwait(false);
...