Set*_*den 13 javascript css-selectors node.js ecmascript-6 testcafe
我正在尝试编写一个脚本,需要根据CSS选择器找到的特定浏览器对象是否存在来调整其工作流行为.
我不想使用document.getElementByID方法,因为这在技术上不是一个CSS选择器,我们的整个企业都是在CSS选择器上标准化的,所以除了CSS选择器以外的任何东西都不会超过我们的代码审查过程无论如何.
var thing = await things.thingSelector(thingName);
if (await t.expect(thing.exists).notOk()) {
await t.click(things.OpenThing(thingName));
} else {
return false;
}
return true;
Run Code Online (Sandbox Code Playgroud)
thingSelector的位置是:
const thingSelector = name =>
Selector('p.thing-header-title span')
.withText(name)
.parent('div.thing');
Run Code Online (Sandbox Code Playgroud)
OpenThing的地方是:
const OpenThing = name =>
thingSelector(name)
.find('a.thing-footer-item')
.withText('Open');
Run Code Online (Sandbox Code Playgroud)
我需要能够继续执行,如果对象不在那里,我正在检查它是否存在,或者对象是否存在,我正在检查它是否存在,以及对象不存在的情况它不存在,对象不存在,我正在检查它不存在.
在所有情况下,我仍然需要继续工作流程.
我尝试过逻辑硬币的两面:
if (!await t.expect(thing.exists).ok())
Run Code Online (Sandbox Code Playgroud)
和
if (await t.expect(thing.exists).notOk())
Run Code Online (Sandbox Code Playgroud)
如果上述某个方案在一个方案中没有失败,则在另一个方案中将失败,而另一个方案将在第一个方案没有失败的情况下失败.我需要一些能给我逻辑的东西,但不会让脚本执行失败,并且仍然允许我返回True或False,具体取决于对象是否存在.
提前感谢您帮助我解决这个问题,并学习和发展我的Javascript技能!
小智 20
您可以通过以下方式检查条件中的async exists属性if:
if(await things.thingSelector(thingName).exists) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
您可以使用以下断言来测试存在和不存在元素:
test('Test existence and non-existence elements', async t => {
await t
.expect(Selector('#existing-element').exists)
.expect(Selector('#non-existing-element').exists).notOk()
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7606 次 |
| 最近记录: |