id = casper.evaluate(function() { return Array.prototype.map.call(document.querySelectorAll("image"), function(e) {return e.getElementById();});}); this.echo(id);
–Mettre à jour–
Si vous voulez obtenir des éléments contenant une class
spécifique class
utilisez une fonction helper pour racler les éléments que vous recherchez.
Exemple:
var casper = require('casper').create(); var ids = []; function getIdsByClassValue() { // use your selector here eg. '.image'. var elems = document.querySelectorAll('input[type="submit"]'); return Array.prototype.map.call(elems, function (e) { // change to the attribute you are looking for. return e.getAttribute('value') }); } casper.start('https://www.google.com/'); casper.then(function () { ids = this.evaluate(getIdsByClassValue); }); casper.run(function() { this.echo('\n - ' + ids.join('\n - ')).exit(); });
Vous pouvez utiliser getElementsAttribute
pour le faire.
.getElementsAttribute
Signature : getElementsAttribute (Sélecteur de chaîne, attribut String)
Récupère les valeurs d'un attribut sur chaque élément correspondant au sélecteur fourni:
Voici un exemple.
var ids = []; var casper = require('casper').create(); casper.start('https://google.com/', function() { this.wait(1000, function() { ids = this.getElementsAttribute('*', 'id') .filter(function(id) { return id.length > 0; }) }); }); casper.then( function() { this.echo('\n - ' + ids.join('\n - ')).exit(); }) casper.run();
return e.getElementById();
Est évidemment pas logique, car getElementById
est une fonction qui s'attend à un argument et n'est disponible que sur le document
.
Il semble que vous souhaitez renvoyer la propriété d' id
:
var ids = casper.evaluate(function() { return Array.prototype.map.call(document.querySelectorAll("image"), function(e) { return e.id; }); }); this.echo(ids);