Le web au doigt et à l'oeil avec CasperJS - Nicolas Perriault
-
0:07 - 0:10Bonjour
-
0:10 - 0:12wouh, salut tout le monde, je vais vous parler de Casper "djaïïïesse"
-
0:12 - 0:18CasperJS pour les francophones, qui est donc un petit toolkit de …
-
0:18 - 0:24alors qui permet de gérer le web au doigt et à l'oeil, voilà merci pour le spoil tout à l'heure
-
0:24 - 0:31Voilà qui est basé sur PhantomJS, qui est une brique open-source qui est un navigateur
-
0:31 - 0:37donc un navigateur web, en mode headless
c'est à dire qui se pilote sans interface graphique -
0:37 - 0:43en ligne de commande par exemple,
pour être automatisé sur des systèmes, sur des serveurs qui n'ont pas d'écran, etc. -
0:43 - 0:46C'est basé sur WebKit donc désolé,
c'est un peu toujours la monoculture -
0:46 - 0:51mais on en discutera plus tard, dehors si vous voulez
-
0:51 - 0:55qui est pilotable donc en ligne de commande, donc très pratique pour scripter et automatiser les choses
-
0:55 - 1:01et qui dispose d'une API full javascript.
-
1:01 - 1:05Javascript on en entend beaucoup parler, un petit peu à tort et à travers, en tout cas à toutes les sauces
-
1:05 - 1:11on a des gens qui font des trucs hallucinants en Javascript, parfois à tort, parfois à juste titre.
-
1:11 - 1:18En tout cas Phantom est un logiciel qui exploite
uniquement une API Javascript -
1:18 - 1:24Donc voici un script Phantom, alors ouais j'suis pas sur qu'on voit grand chose, j'suis un petit peu navré.
-
1:24 - 1:28Voilà donc en gros cette API Javascript permet
par exemple de créer un objet, -
1:28 - 1:30une instance d'objet qui est une page web
-
1:30 - 1:34d'ouvrir donc une URL, par exemple google.fr
-
1:34 - 1:40et une fois qu'on a reçu la réponse du serveur
de Google avec le code HTML -
1:40 - 1:41on peut faire une certain nombre de choses
-
1:41 - 1:45par exemple checker que tout s'est bien passé
et qu'il n'y a pas eu d'erreur -
1:45 - 1:48Et ensuite faire des assertions, etc.
-
1:48 - 1:54On lance le script et on obtient le résultat du script qui était d'afficher le contenu texte de la balise
-
1:54 - 1:56On peut faire des choses extrêmement complexes,
-
1:56 - 1:59donc là comme on voit rien, j'vais juste vous dire
ce que ça fait très rapidement -
1:59 - 2:07ça va sur le site de sudweb.fr et ça récupère le programme dans un tableau d'objets JSON, tout simplement.
-
2:07 - 2:11Donc vous voyez on pilote vraiment un navigateur web
en ligne de commande -
2:11 - 2:15et en utilisant des scripts Javascript tous bêtes
-
2:15 - 2:17donc si vous faîtes du jQuery des choses comme ça
-
2:17 - 2:21vous savez à priori coder en Javascript et faire ça.
-
2:21 - 2:23Mais on a un petit problème avec PhantomJS quand même
-
2:23 - 2:26parce que c'est une super lib' mais comment on clique, comment on interagit avec la page ?
-
2:26 - 2:30comment on enchaîne les interactions, simplement, facilement ?
-
2:30 - 2:31et surtout comment on vérifie des trucs ?
-
2:31 - 2:34et éventuellement d'où vient le vent
mais ça je n'y répondrai pas. -
2:34 - 2:37Un petit détour en Egypte avec …
les Pyramides de l'Enfer -
2:37 - 2:42Qu'est-ce que c'est que les pyramides de l'enfer ?
C'est la gestion de l'asynchronicité en Javascript -
2:42 - 2:44je sais pas si vous avez ...
alors ça s'adresse surtout aux codeurs -
2:44 - 2:48mais vous avez tous rencontré ça théoriquement
à un moment ou à un autre -
2:48 - 2:52on a des fonctions qui passent en argument des callbacks, et tout ça s'enchaîne
-
2:52 - 2:57il faut attendre le résultat de l'appel précédent
pour décider de ce qu'on fait ensuite. -
2:57 - 3:00Donc ça, ça fait des choses qui partent vers la droite
-
3:00 - 3:03et tout ce qui part vers la droite n'est pas maintenable (rires)
-
3:03 - 3:11Alors … c'est là qu'arrive CasperJS (applaudissements)
-
3:11 - 3:17CasperJS va essayer de répondre à un certain nombre de problématiques qui sont posés par Phantom
-
3:17 - 3:20en terme d'ergonomie, d'utilisabilité du code, etc.
-
3:20 - 3:26et donc c'est évidemment basé sur PhantomJS
et propose une API haut niveau, par dessus, -
3:26 - 3:29qui va simplifier cette fameuse gestion de l'asynchronicité
-
3:29 - 3:35des méthodes pour interagir avec la page,
créer des scénarios de navigation -
3:35 - 3:41et effectivement tester des sites web,
parce que c'est peu ça aussi un des objectifs -
3:41 - 3:44Donc au niveau de l'asynchronicité,
voilà on a tout ferré à gauche : ça marche -
3:44 - 3:48Et voilà on a un petit event Listener
-
3:48 - 3:53c'est l'équivalent du script PhantomJS
que je vous ai affiché tout à l'heure -
3:53 - 3:56ça fait exactement la même chose,
c'est-à-dire qu'on ne se prend plus la tête -
3:56 - 3:59avec des callbacks, des callbacks, des callbacks
on les enchaîne très simplement -
3:59 - 4:02avec une API qui semble d'utilisation naturelle.
-
4:02 - 4:05Au niveau des clics c'est pareil, on a une méthode
qu'on ne voit pas à l'écran -
4:05 - 4:10mais qui s'appelle Click et qui permet de prendre en argument un sélecteur CSS
-
4:10 - 4:14et depuis deux semaines un sélecteur XPath éventuellement
-
4:14 - 4:17pour dire je veux cliquer sur tel bouton
-
4:17 - 4:21on lance le script
et on obtient les mêmes résultats qu'avec PhantomJS -
4:21 - 4:23Au niveau des tests, de la même manière
-
4:23 - 4:28on peut tout à fait partir sur l'utilisation de cette API pour générer des tests
-
4:28 - 4:31qui en plus ont l'amabilité d'être colorisés
-
4:31 - 4:36et exportables sous par exemple Jenkins
avec des résultats au format XUnit -
4:36 - 4:38Le site est parfaitement documenté
-
4:38 - 4:41je dis parfaitement
parce que j'en ai assez chié pour dire parfaitement -
4:41 - 4:46Les limitations, c'est WebKit only
donc ça ne remplace pas Selenium -
4:46 - 4:50ça n'a pas d'interface graphique
donc c'est très difficile de se projeter -
4:50 - 4:54il faut s'abstraire
et utiliser beaucoup en fait la console de Firebug -
4:54 - 4:57ou un bookmarklet depuis avant-hier.
-
4:57 - 5:03Et les gros intérêts
dans les petites features intéressantes qu'apporte Casper -
5:03 - 5:06ça vaut réapprend Javascript
ou ça vous apprend Javascript si vous connaissez pas -
5:06 - 5:07ça vous réapprend le DOM
-
5:07 - 5:09c'est bien parce qu'on a beaucoup de couches d'abstractions par dessus le DOM
-
5:09 - 5:11mais remettre un peu les pieds dedans des fois
c'est aussi sympa -
5:11 - 5:15ça vous réapprend le web parce qu'on est vraiment
au plus bas niveau de ce qui se passe dans un navigateur -
5:15 - 5:18et des échanges qu'on peut avoir en AJAX
avec les serveurs, etc. -
5:18 - 5:20et souvent à mieux connaître votre propre site.
-
5:20 - 5:23Voilà je vous remercie. (0;00)
- Title:
- Le web au doigt et à l'oeil avec CasperJS - Nicolas Perriault
- Description:
-
CasperJS est un outil permettant de scripter en Javascript un scénario de navigation sur un véritable navigateur Web, basé sur Webkit et ne nécessitant pas d’interface graphique. CasperJS peut servir à produire des tests fonctionnels poussés bénéficiant d’un environnement DOM et Javascript complet, mais aussi à analyser des documents Web, faire des tests de performance ou même extraire des données.
L’intérêt majeur de CasperJS est qu’il permet relativement simplement de tester et valider fonctionnellement des sites et applications Web complexes, reposant sur l’exploitation intensives de Javascript, de comportements asynchrones et d’AJAX par exemple.
Voir aussi cet extrait pour des explications de code par son auteur : https://vimeo.com/42881484
http://casperjs.org
- Video Language:
- French
Retired user edited French subtitles for Le web au doigt et à l'oeil avec CasperJS - Nicolas Perriault | ||
Retired user added a translation |