2016-03-24 10 views
0

DatenCasperJS‘getElementInfo im Seitenkontext Mit

<a href="/route" data-eventid="train_card" data-eventlabel="2:10"> <strong>2:10</strong> <h5>Bristol to London</h5> <em>Platform 1</em> </a> 

-Code

function getPlatform() { 
    var types = document.querySelectorAll('.appList a'); 
    return Array.prototype.map.call(platforms, function(e){ 
     return e.innerText; 
    // return e.getElementInfo('em'); 
    // return e.fetchText('a em'); 
    }); 
}; 

Wenn ich innertext verwende ich bekommen: -

2:10 
Bristol to London 
Platform 1 

jedoch nur ich will "Plattform 1" von th bekommen e Element EM, Wie kann ich das tun, habe ich versucht mit getElementInfo & FetchText - siehe Code, den ich auskommentiert habe, funktioniert nicht .. Irgendwelche Ideen?

Antwort

0

ändern

return e.innerText; 

zu

return e.querySelector("em").textContent; 

Dies ist ein einfaches Beispiel für die Element API. Sie können casper.getElementInfo nicht verwenden, da casper nicht innerhalb des Seitenkontexts definiert ist (innerhalb von casper.evaluate()).

Sie müssen sicherstellen, dass e.querySelector("em") nicht null ist.

+0

Danke, das hat funktioniert ... Ich lerne nur ... können Sie erklären, was Sie mit Ihrer Aussage "casper ist nicht definiert" meinen. ? und re '.. ist null, ich nehme an, du meinst Test, um sicherzustellen, dass das Ergebnis etwas hat, bevor du es zurückbringst. – user2596590

+0

'e' ist ein DOM-Element, das keine 'getElementInfo'-Funktion besitzt. Es gibt die Funktion "casper.getElementInfo", die im Seitenkontext nicht verfügbar ist. Der [Seitenkontext ist Sandkasten] (http://phantomjs.org/api/webpage/method/evaluate.html), so dass Sie keine außerhalb definierten Variablen verwenden können und es nicht möglich ist, komplexe Objekte in den Seitenkontext zu übergeben. –

+0

danke für Ihre Hilfe – user2596590