DOM-Manipulation mit PhantomJS

8

Ich verwende PhantomJS, um Screenshots von beliebigen URLs zu erstellen. Bevor der Screenshot gemacht wird, möchte ich das Seiten-DOM manipulieren, um alle Dropdown-Menüs zu entfernen, da PhantomJS sie in der oberen linken Ecke der Seite falsch darstellt (ein bekanntes Phantom Problem .)

Ich habe ein einfaches DOM-Skript, um dies zu tun:

%Vor%

Dies wurde getestet und funktioniert als eigenständiges Javascript. Es funktioniert jedoch nicht innerhalb des PhantomJS-Codes, den ich verwende, um die Screenshots zu sammeln (der letzte gezeigte Teil):

%Vor%

Einige Seiten rendern immer noch mit einem Auswahlfeld an der falschen Stelle. Ich würde mich freuen, wenn ich entweder den ursprünglichen PhantomJS-Rendering-Fehler beheben oder die Dropdown-Menüs im DOM ausblenden würde. Danke.

    
eli 29.08.2012, 14:39
quelle

2 Antworten

11

Führen Sie es im richtigen Kontext aus, d. h. innerhalb der Seite mit page.evaluate . Es gibt viele Beispiele, die in PhantomJS enthalten sind , die dies demonstrieren, z. useragent.js .

    
Ariya Hidayat 01.09.2012, 04:30
quelle
2

Dieser Code funktioniert nicht? Ich habe die Variable cached selects in der for-Schleife verwendet, anstatt die Elemente aus dem DOM erneut auszuwählen, um die Leistung zu verbessern.

%Vor%     
Cameron Tinker 31.08.2012 17:44
quelle

Tags und Links