2017-09-21 6 views
1

J'ai un code html:Comment obtenir le texte du tag avec casperjs?

<div class="div_table_body"> 
<table class="part_listing"> 
    <tr><td>sometext</td></tr> 
    <tr><td>sometext2</td></tr> 
    ... 
</table> 
</div> 

J'essaie d'obtenir un texte dans la balise td avec casperjs:

function getLinks() { 
    var tr = document.querySelectorAll('div.div_table_body table.part_listing tr'); 
    return Array.prototype.map.call(tr, function (e) { 
     return e.getHTML('td', true); 
     }); 
    } 
    casper.then(function() { 
     links = this.evaluate(getLinks); 
     console.log('links ' +links); 
     }); 

Mais je reçois un NULL, s'il vous plaît aider à comprendre ce que dans ce le code est faux?

Répondre

2

Ceci va mettre à jour getLinks pour créer et renvoyer une zone contenant des chaînes outerHTML pour le td. Vous ne pouvez pas utiliser le getHTML() à l'intérieur de getLinks. Casper évalue le getLinks et l'exécute sur une page, ce qui doit être JS vanilla.

function getLinks() { 
    var tr = document.querySelectorAll('div.div_table_body table.part_listing tr'); 
    return Array.prototype.map.call(tr, function (e) { 
     return e.querySelector('td').outerHTML; 
    }); 
} 

Pour chercher avec Casper seulement:

casper.start('http://www.example.com', function() { 
    this.getHTML('div.div_table_body table.part_listing tr > td', true); 
}); 

Je mis à jour votre sélecteur pour sélectionner td s des tr s.

+1

Mouser merci très mach, ça marche bien – ZaurK