我正在尝试编写一个脚本,该脚本需要根据 CSS 选择器找到的特定浏览器对象是否存在来调整其工作流行为。
我不想使用 document.getElementByID 方法,因为这在技术上不是 CSS 选择器,而且我们整个企业都在 CSS 选择器上进行了标准化,因此除了 CSS 选择器之外的任何遍历 DOM 的东西都不会通过我们的代码审查流程反正。
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');
如果对象不存在并且我正在检查它是否存在,或者如果对象存在并且我正在检查它不存在,以及对象不存在的情况,我需要能够继续执行它不存在并且对象不存在,我正在检查它是否不存在。
在所有情况下,我仍然需要继续工作流程。
我已经尝试了逻辑硬币的两面:
if (!await t.expect(thing.exists).ok())
和
if (await t.expect(thing.exists).notOk())
如果上述其中一个在一个场景中没有失败,那么它将在另一个场景中失败,而另一个将在第一个没有失败的场景中失败。我需要一些能给我逻辑的东西,但永远不会使脚本执行失败,并且仍然允许我根据对象是否存在返回 True 或 False。
预先感谢您帮助我解决这个问题,并学习和成长我的 Javascript 技能!