J'utilise Webdriver IO et son testrunner wdio avec mocha et chai.

Je souhaite créer des commandes personnalisées, mais dans ce scénario, où et comment est le meilleur moyen d'ajouter des commandes personnalisées?

1
Siegfried 3 août 2017 à 13:20

2 réponses

Le meilleur endroit pour conserver la commande personnalisée est dans votre fichier de configuration wdio.

 before: function(capabilities, specs) {
       // Comment why this command is getting added and what it is supposed to do
        browser.addCommand('nameOfCommand', function() {
            // your code for the command            
        });
    },

Lorsque vous avez terminé d'ajouter la commande personnalisée dans le fichier de configuration. Vous pouvez les appeler n'importe où dans l'ensemble de votre framework en appelant simplement l'objet navigateur. Comme pour la commande personnalisée ci-dessus à appeler: browser.nameOfCommand() fera la magie.

2
T Gurung 3 août 2017 à 13:11

Pour mémoire, ceci est un exemple de la façon dont je crée mes commandes personnalisées à l'intérieur des objets de page.

var HomePage = function() {
    var me = this;

    this.clickFlag = function() {
        var flag = me.navbar.$('.//li[@class="xtt-popover-click xtt-flags"]'),
            flagActive = me.navbar.$('.//li[@class="xtt-popover-click xtt-flags active"]');
        flag.click();
        flagActive.waitForExist(1000);
    }

    this.elementThatContainsText = function(tag, text) {
        var el;
        if (tag) {
            el = $('//' + tag + '[contains(content(), "' + text + '")]');
        } else {
            el = $('//*[contains(content(), "' + text + '")]');
        }
        return el;
    }

    this.highlight = function(webElement) {
        var id = webElement.getAttribute('id');
        if (id) {
            browser.execute(function(id) {
                $(id).css("background-color", "yellow");
            }, id);
        }
    }

};

Object.defineProperties(HomePage.prototype, {
    navbar: {
        get: function() {
            return $('//div[@class="navbar-right"]');
        }
    },
    comboLanguage: {
        get: function() {
            return this.navbar.$('.//a[@id="xtt-lang-selector"]');
        }
    },
    ptLink: {
        get: function() {
            return this.navbar.$('.//a[@href="/institutional/BR/pt/"]');
        }
    }
});

module.exports = new HomePage();

Ainsi, ma page d'accueil a maintenant une commande clickFlag personnalisée et une commande highlight. Et des propriétés comme navbar et comboLanguage qui sont des sélecteurs.

0
Siegfried 4 août 2017 à 14:38