Commit f9b9bb39 f9b9bb39b65a25e91ab0a47124f0408c960271ba by Solomon White

Example in which steps are not all known in advance

1 parent 33f335a6
# get multiple pages of google search results
#
# usage: phantomjs googlepagination.coffee my search terms
#
# (all arguments will be used as the query)
#
phantom.injectJs('casper.js')
links = []
casper = new phantom.Casper
casper.start 'http://google.com', ->
@fill 'form[name=f]', q: phantom.args.join(' '), true
@click 'input[value="Google Search"]'
casper.then ->
# google's being all ajaxy, wait for results to load...
@waitForSelector 'table#nav', ->
processPage = (cspr) ->
currentPage = Number cspr.evaluate(-> document.querySelector('table#nav td.cur').innerText), 10
currentPage = 1 if currentPage == 0
cspr.capture "google-results-p#{ currentPage }.png"
# don't go too far down the rabbit hole
return if currentPage >= 5
cspr.evaluate ->
if nextLink = document.querySelector('table#nav td.cur').nextElementSibling?.querySelector('a')
nextLink.setAttribute 'id', 'next-page-of-results'
nextPage = 'a#next-page-of-results'
if cspr.exists nextPage
cspr.echo 'requesting next page...'
cspr.thenClick(nextPage).then(processPage)
else
cspr.echo "that's all, folks."
processPage(casper)
casper.run -> @exit()