Does Phantom.js capture all AJAX?

TIMEX picture TIMEX · Feb 7, 2013 · Viewed 25.7k times · Source

I have a backbone app that has a ton of AJAX. (each page load results in 5-6 ajax calls) because I have many views and internal views within those views,

if I run Phantom.js, can I get the final html result?

Final result is what the user sees after all my ajax calls run.

Answer

Cybermaxs picture Cybermaxs · Feb 10, 2013

PhamtonJs is a headless WebKit with JavaScript API. When crawling a page, PhatomJs will download all dependants requests such as images, js, css... It will also executes JS and ajax calls. However the onLoaded callback is invoked when the page finishes the loading, not when there are no pending requests. So, you have to use a trick for this.

There are two way to solve the problem :

  • Wait until "something" effectively changed in you page (an element). The best example is waitFor.js
  • Wait a few seconds until no requests were received.