TestCafe:等待 t.expect(Selector().exists).ok() 偶尔会抛出 TypeError

TestCafe: await t.expect(Selector().exists).ok() sporadically throwing a TypeError

await t.expect(Selector().exists).ok() 抛出 TypeError: Cannot read property '0' of null 有什么可能的原因吗?它偶尔发生,所以很难追踪,但我的理解是,如果选择器不存在于 DOM 树中,那么它应该等待超时并抛出一个预期的布尔值,如果没有发现错误则为布尔值。我知道我提供的内容不多,但我无法在面向生产的网站上重现该问题。任何帮助将不胜感激。

编辑:这是 TestCafe 的 1.18.3 版,但我不确定它是否也发生在其他版本中。

如果没有测试代码示例,很难找到问题的原因。您能否在每个可能有问题的地方之前插入超时时间较长的 t.wait 方法,例如

await t.expect(Selector().exists).ok() ?

然后,观察测试是如何通过的,看看问题是否取决于超时。

请关注来自Selector Timeout的以下信息:

Selector timeouts have no effect on Selector.exists and Selector.count properties. These properties are evaluated immediately regardless of a timeout. To apply a timeout to exists and count assertions, pass the timeout to the assertion method (expect.ok, expect.eql, etc.). If the issue depends on the timeout, please share a small test code snippet where the problem is reproduced.

如果问题独立于超时重现,这意味着问题出在您代码的另一部分。

虽然我没有发现失败的根本原因,但在重试中包装 expect 方法已经完全消除了错误。如果我获得有关原始问题的任何其他信息,我将更新此主题。