如何等待直到在TestCafe中执行角度执行?

时间:2019-04-17 13:26:07

标签: testcafe

嗨,我想在应用中执行一些操作后等待角度进入稳定状态。 我发现角有 window.getAllAngularTestabilities()和isStable function()

我想通过TestCafe Client Function来使用它,但是TestCafe无法识别此属性。

您是否知道如何处理?

2 个答案:

答案 0 :(得分:1)

我认为您可以检查https://github.com/DevExpress/testcafe-angular-selectors存储库。它内置了mechanisms,可以等待Angular

答案 1 :(得分:1)

ClientFunction代码可以在页面上的所有其他脚本之前执行。在这种情况下,Angular可能没有足够的时间来完成初始化。尝试为您的页面使用以下代码:

const delay = ms => new Promise(r => setTimeout(r, ms));

const isAngularStable = ClientFunction(() => {
   if(!window.getAllAngularTestabilities)
       return false;

   return window.getAllAngularTestabilities().every(x => x.isStable());
});

const waitUntilAngularIsStable = async () => {
   while(!await isAngularStable())
       await delay(500); 
};

test('Test', async t => {
   await waitUntilAngularIsStable();
   // ...
});