Spectron async isExisting не возвращает ложь - PullRequest
0 голосов
/ 05 мая 2018

Я использую 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 голосов
/ 03 июля 2018

isExisting должен работать нормально.

Вы должны правильно вернуть обещание

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

Это работало как искра

Возвращает истину, если по крайней мере один элемент существует данным селектором. Если не вернет ложь

Для ожидания элемента, пожалуйста, используйте ниже

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

Просто передайте приложение и элемент, которые необходимо проверить. Более понятный способ избежать ожидания

Возвращает истину, если элемент существует до 60 секунд, если нет сообщения об ошибке не существует через 60 секунд

...