EvaluateExpressionAsync <>超时?

问题描述

我正在使用Puppeteer Sharp呈现报告,其中一部分是执行用户提供的JavaScript来为报告准备数据。

我使用AddScriptTagAsync将脚本添加页面,然后在呈现报告之前调用用户提供的脚本。

如果用户提供的javascript出现了导致无限循环的问题(例如),那么我对EvaluateExpressionAsync调用将永远等待:

await page.EvaluateExpressionAsync<dynamic>($"Prepare({DataObject});")

我无法将取消令牌传递给EvaluateExpressionAsync,因此我无法控制它,并且此方法似乎没有超时可用。

我想将其限制为可控制的秒数,然后使其超时。

任何有关如何执行此操作的建议将不胜感激。

解决方法

您将使用WaitForExpressionAsync
此方法的想法是在一段时间内执行表达式,直到结果为真为止。 但是,如果确保表达式始终返回真实值,则WaitForExpressionAsync将使用您传递的超时作为选项进行超时。