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 }