我正在使用Spectron 3.8.0并且我正在尝试检查DOM中是否存在元素。我尝试将waitUntil
方法与try/catch
一起使用,但它没有按预期工作。最近我得到sync app.client.isExisting()
如果元素存在则返回true,否则它会卡住并抛出超时异常(mocha)。
以下代码:
@log
protected async isExisting(element: string, name?: string): Promise<boolean> {
await this.app.client.isExisting(element)
.then(data => {
const isExisting = data;
console.log(CONSOLE_COLORS.YELLOW, "IS EXISTING???", isExisting);
return isExisting;
})
.catch(e => {
console.log(CONSOLE_COLORS.RED, "no existing elem")
return false;
});
}
答案 0 :(得分:0)
isExisting应该可以正常工作。
您应该正确返回承诺
return app.client.isExisting('#element');
这就像火花一样
如果给定选择器至少存在一个元素,则返回true。否则返回false
等待元素,请使用以下
doesexist(app, element) {
return app.client.waitforExist(element,60 * 1000);
}
只需通过需要检查的应用和元素即可。更简洁的方法可以避免等待
如果元素在60秒之前存在,则返回true;如果在60秒后没有错误提示,则不存在