Wenn Sie versuchen, die Daten mit der Zeile console.log(page.content);
anzuzeigen, rufen Sie tatsächlich diese Funktion auf, noch bevor das Klicken passiert.
Think asynchron.
wird der Klick nach dem Laden der Seite ausgeführt und die js injiziert wird, und man kann nie wissen, wann ist, dass auf dem Server, Netzwerkverzögerung usw.
Leider PhantomJS nicht über API für Ajax Rückrufe je passieren wird .
Bisher habe ich für ähnliche Situationen einen Beobachter geschrieben, der ständig ein oder mehrere HTML-Elemente überwacht, die vom Ajax-Callback betroffen sind. Sagen wir zum Beispiel, es gibt ein Div, das jetzt leer ist und der Ajax-Callback wird das mit etwas Inhalt füllen. Ich habe eine setInterval
oder setTimeout
in PhantomJS-Code erstellt und evaluate
aufgerufen, die ihrerseits Änderungen in diesem div. Von dieser Evaluierungsfunktion habe ich basierend auf dem, was ich bekommen habe, einen booleschen Wert zurückgegeben und weitere Schritte unternommen. Sie können jedoch auch stattdessen den Inhalt zurückgeben, den Sie in Ihre console.log
eingeben können, und dann die Anwendung beenden.
Dies kann leicht getan werden, wenn Sie casperJS
(http://casperjs.org/) verwenden wie wait()
waitFor()
eine der vielen APIs waitForResource()
waitForSelector()
waitWhileSelector()
waitForSelectorTextChange()
waitForText()
waitUntilVisible()
waitWhileVisible()