Если вы пытаетесь показать данные по линии console.log(page.content);
, вы фактически вызываете эту функцию еще до того, как произойдет щелчок.
Думайте асинхронно.
Клик выполняется после загрузки страницы и JS впрыскивается, и вы никогда не можете знать, когда что будет происходить в зависимости от сервера, сети лаг и т.д.
К сожалению, PhantomJS не имеет API для Ajax обратных вызовов ,
До сих пор, что я делал для подобных ситуаций, я писал наблюдателю, чтобы постоянно отслеживать один или несколько элементов HTML, на которые влияет обратный вызов ajax. Скажем, например, есть div, который сейчас пуст, и обратный вызов ajax собирается заполнить это каким-то контентом. Я создал setInterval
или setTimeout
в коде PhantomJS и назвал evaluate
, который, в свою очередь, наблюдал за любыми изменениями в этом div. Из этой функции оценки я вернул логическое значение, основанное на том, что получил, и предпринял дальнейшие шаги. Однако вы также можете вернуть содержимое, которое вы можете поместить в свой console.log
, а затем выйти из приложения.
Это можно легко сделать, если вы используете casperJS
(http://casperjs.org/), используя один из многих API, как wait()
waitFor()
waitForResource()
waitForSelector()
waitWhileSelector()
waitForSelectorTextChange()
waitForText()
waitUntilVisible()
waitWhileVisible()