casperJs

l'outil qui va devenir votre meilleur ami !




ParisJS  #34  - 25 / 02 / 2014  

Qu'est-ce que casperjs ?


                                 Un outil de scripting web et de testing


                                Tests fonctionnels


                                Initialement une surcouche de Phantomjs

Faites entrer le fantome


                           Installer PhantomJs : http://phantomjs.org

                           Installer CasperJs : http://casperjs.org             

                           Lancer Casper : allons-y  !

var casper = require('casper').create({});

Complètement Cross/Plateforme

Supports ...

PhantomJs permet d'utiliser WebkitJs

  • Safari
  • Chrome & chromium
  • Opera
                                  Firefox ?
                                  => CasperJs supportes SlimerJs

                                 Internet Explorer ?
                                 => TrifleJs est en WIP, et gère IE8+ (\o/ )

TESTER DES FORMS


var casper = require('casper').create({});
// http://docs.casperjs.org/en/latest/quickstart.html#now-let-s-scrape-google
casper.start('http://www.google.fr', function() {
    this.test.pass('Access to Google Search Engine Success');
});
 
// Fill login form and submit
casper.thenOpen('http://www.google.fr',function() {
    this.test.info('Current location is ' + this.getCurrentUrl());
    this.fill('form[action="/search"]', { q: 'esgi' }, true);
});

Rechercher "esgi" dans Google

Clic & SUIVI DE LIENS


var casper = require('casper').create({});

// Access to Google Search Engine France
casper.start('http://www.siteduzero.com/');
 
casper.then(function() {
    // Click on 1st result link
    this.click('a[href="/conditions-generales-utilisation"]');
});

// access to CGU page
casper.then(function() {
    console.log('clicked ok, new location is  '+this.getCurrentUrl());
});
Accéder à la page des CGU en suivant le clic

ReALISER DES Screenshots


// Is google search engine reachable ?
casper.start('http://www.google.fr',function() {
    if(!this.test.assertHttpStatus(200, 'http://www.google.fr'))
    {
        // Screenshot if google is unreachable
        this.capture('error.png');
    }
});
casper.thenOpen('http://www.cockpit.airlines-manager.com', function() {
    this.test.assertTitle('Airlines Manager : jeu en ligne de gestion gratuit','Ok, it\'s good');
});

Supportes jpg/png/gif et ... PDF
CasperJs est "CSS3-sélecteur" compatible 

TESTS FONCTIONNELS

// Is google search engine reachable ?
casper.test.begin('A test Suite', 2, function suite(test) {
    casper.start('http://www.google.fr',function() {
        if(!test.assertHttpStatus(200, 'http://www.google.fr'))
        {
            // Screenshot if google is unreachable
            this.capture('error.png');
        }
    });
    casper.thenOpen('http://www.cockpit.airlines-manager.com', function() {
        test.assertTitle('Airlines Manager : jeu en ligne de gestion gratuit','Ok, it\'s good');
    });
});

Disponibilité de la page, d'élements du DOM

TESTS UNITAIRES


// from http://docs.casperjs.org/en/latest/modules/tester.html#assertinstanceof
function Cow() {
    this.moo = function moo() {
        return 'moo!';
    };
}
casper.test.begin('assertInstanceOf() tests', 2, function suite(test) {
    var daisy = new Cow();
    test.assertInstanceOf(daisy, Cow, "Ok, daisy is a cow.");
    test.assertInstanceOf(["moo", "boo"], Array, "We can test for arrays too!");
    test.done();
});

Bien moins bon que Mocha.js 

EXPORTS MULTIPLES

Retours JUnit/console/(HTML)

ACCEDER AU SHELL (?)

// do some caspersjs stuff ...
var childProcess;
try {
    childProcess = require('child_process');
}catch(e) {
    casper.log(e, 'error');
}
if (childProcess) {
    childProcess.execFile('/bin/bash', ['echo.sh', 'Hello', 'World'], null, function (err, stdout, stderr) {
    casper.log('execFileSTDOUT: '+ stdout, 'debug');
    casper.log('execFileSTDERR: '+ stderr, 'debug');
});
casper.log('Done', 'debug');
} else {
    casper.log('Unable to require child_process native module', 'warning');
}


       Et d'autres bizarreries à découvrir :-)

POUR FINIR ...


          Une super documentation complète et à jour                      

          Beaucoup de possibilités: scripting, testing  ...                      

          Sorties Console & XML, "Jenkins-ready "             
                      


  Vous en voulez encore plus ?






Des questions ??

casperjs

By mickaelandrieu

casperjs

An introduction of CasperJs uses : scrapping, testing, form submitting

  • 2,682
Loading comments...

More from mickaelandrieu