TestCafe – 如何检查Web元素是否存在或不存在未通过测​​试?

我试图编写一个脚本,需要调整它的工作stream行为取决于CSSselect器find一个特定的浏览器对象是否存在或不存在。

我不想使用document.getElementByID方法,因为这在技术上不是CSSselect器,而且我们的整个企业在CSSselect器上是标准化的,所以任何走过DOM然后CSSselect器的东西都不会超过我们的代码审查过程无论如何。

var thing = await things.thingSelector(thingName); if (await t.expect(thing.exists).notOk()) { await t.click(things.OpenThing(thingName)); } else { return false; } return true; 

在哪里thingSelector是:

 const thingSelector = name => Selector('p.thing-header-title span') .withText(name) .parent('div.thing'); 

OpenThing在哪里:

 const OpenThing = name => thingSelector(name) .find('a.thing-footer-item') .withText('Open'); 

我需要能够继续执行,如果对象不存在,我检查它是否存在,或者如果对象在那里,我检查它不存在,以及对象不存在的情况下它不存在,对象不存在,我检查它不存在。

在所有情况下,我仍然需要继续工作stream程。

我已经尝试了逻辑硬币的双方:

 if (!await t.expect(thing.exists).ok()) 

 if (await t.expect(thing.exists).notOk()) 

如果其中一个在一个场景中没有失败,那么另一个在另一个场景中将失败,另一个在第一个场景没有失败的情况下将失败。 我需要的东西,会给我的逻辑,但永远不会失败的脚本执行,并仍然允许我返回True或False取决于对象是否存在或不存在。

预先感谢您帮助我解决这个问题,同时也学习和发展我的Javascript技能!

您可以按以下方式检查if条件中的asynchronousexists属性:

 if(await things.thingSelector(thingName).exists) { // do something }