Невозможно добавить собственную команду - PullRequest
1 голос
/ 05 мая 2020

Я хочу создать собственную команду в проекте webdriverIO машинописного текста. Но что бы я ни делал, команда всегда завершается ошибкой:

TypeError: browser.waitAndClick не является функцией.

В основном я хотел добавить та же функция, которую они упомянули в webdriverIO do c. Я добавляю его из beforeAll () в свои спецификации.

import { DEFAULT_TIMEOUT } from "../constants";
class CustomCommand {
    private static alreadyAdded = false;
    static addCommands(){
        if(!this.alreadyAdded) {
            browser.addCommand('waitAndClick', (el: WebdriverIO.Element) => {
                el.waitForDisplayed({timeout: DEFAULT_TIMEOUT});
                el.click();
            }, true);

            browser.addCommand('waitAndSetValue', (el: WebdriverIO.Element, text: string) => {
                el.waitForDisplayed({timeout: DEFAULT_TIMEOUT});
                el.setValue(text);
            }, true);

            this.alreadyAdded = true;
        }
    }
}

export default CustomCommand;

И я вызываю эту функцию addCommands () из beforeAll () из spe c. Но не повезло!

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Один приятный человек из Slack Channel помог мне выяснить точную причину. На самом деле я кое-что пропустил в do c: If you register a custom command to the browser scope, the command won’t be accessible for elements. Likewise, if you register a command to the element scope, it won’t be accessible in the browser scope. Оказалось, в этом причина. Теперь это решено.

Передача false в качестве третьего параметра в addCommand() исправила его.

0 голосов
/ 05 мая 2020

Добро пожаловать в stack-overflow!

Обратите внимание, что в webdriverio нет ловушки beforeAll согласно документации здесь . Это должно сработать, если вы вызовете это до хука.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...