1

我正在使用 spectron 3.8.0 并试图检查 DOM 中是否存在 am 元素。我尝试使用waitUntilwith 的方法try/catch,但它没有按预期工作。最近,如果元素存在,我得到同步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;
        });
}
4

1 回答 1

0

isExisting 应该可以正常工作。

你应该正确地返回承诺

return app.client.isExisting('#element');

这就像火花一样

如果给定选择器至少存在一个元素,则返回 true。如果不存在,则返回 false

要等待一个元素,请使用以下

doesexist(app, element) {
    return app.client.waitforExist(element,60 * 1000);
}

只需传递需要检查的应用程序和元素。避免等待的更简洁的方法

如果元素在 60 秒之前存在,则返回 true,如果不存在错误,则在 60 秒后不存在

于 2018-07-03T14:18:05.430 回答