Spectron async isExisting不会返回false

时间:2018-05-04 22:23:44

标签: javascript webdriver electron webdriver-io spectron

我正在使用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;
        });
}

1 个答案:

答案 0 :(得分:0)

isExisting应该可以正常工作。

您应该正确返回承诺

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

这就像火花一样

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

等待元素,请使用以下

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

只需通过需要检查的应用和元素即可。更简洁的方法可以避免等待

如果元素在60秒之前存在,则返回true;如果在60秒后没有错误提示,则不存在