Bonjour,

J'utilise casperjs et je cherche à cliquer sur un bouton contenant un attribut ng-click. Donc le site utilise la techno angularjs.
Mon problème est que cela ne fonctionne pas.

Voici le code HTML

<input class="btn disabled" type="button"
ng-disabled="isTransactionInProgress||btnValDisable"
ng-class="{disabled:isTransactionInProgress||btnValDisable}"
ng-click="btnVal()" value="Valider" disabled="disabled"> 

Voici mon code

casper.then(function () {
    this.evaluate(function() {  
        $(document).find('input[ng-model="login"]').val(arguments[0]);
        $(document).find('input[ng-model="password"]').val(arguments[1]);       
        $($(document).find('input[value="Valider"]')).click();
    },casper.cli.raw.args[0],casper.cli.raw.args[1]);

    this.wait(3000);
});

Rien ne se passe. Si quelqu'un a une idée. Merci d'avance.

Yann

2 réponses


Salut,

Tu peux faire ceci :

$(document).find('input[value="Valider"]').click();

A quel moment appelle-tu ton code pour tes tests ? Es-tu sûr que le DOM est bien ready ? Ce que tu pourrais également essayer est de mettre un setTimeout() afin de retarder un peu l'exécution de tes tests pour permettre au DOM de charger (c'est sale mais bon).

Sinon, essaye d'utiliser une lib de tests pour AngularJS ça sera plus simple (il y a une formation sur ce site).

yannp
Auteur

Salut,
Merci pour ta réponse. Hélas tes propositions ne marchent pas non plus. Comme je n'étais suis pas sûr que le DOM soit prêt, j'ai affiché une valeur d'un "input". Cette valeur apparait. Est-ce que dans ces conditions je peux considérer que le DOM est prêt ?
Sinon j'avais regardé un peu angular ... (Je n'ai pas encore regarder sur ce site)
Voilà ce que j'ai testé :

angular.element($(document).find('input[value="Valider"]').scope().btnVal();

Et cela ne marche pas. Si tu as une idée ...