CasperJS

15
CasperJS Howard 2013/12/22

description

 

Transcript of CasperJS

Page 1: CasperJS

CasperJS

Howard 2013/12/22

Page 2: CasperJS

CasperJS

CasperJS is an open source navigation scripting & testing utility written in Javascript for the PhantomJS WebKit headless browser and SlimerJS (Gecko).

It eases the process of defining a full navigation scenario and provides useful high-level functions, methods & syntactic sugar

Page 3: CasperJS

Doing common tasks

such as: defining & ordering browsing navigation steps

filling & submitting forms

clicking & following links

capturing screenshots of a page (or part of it)

testing remote DOM

logging events

downloading resources, including binary ones

writing functional test suites, saving results as JUnit XML

scraping Web contents

Page 4: CasperJS

Installation

Prerequisites PhantomJS 

PhantomJS is a headless WebKit scriptable with a JavaScript API.

It has fast and native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG.

http://phantomjs.org/download.html

CasperJS

Page 5: CasperJS

目標

列舉出目前 IPTECH TW 的目前可檢索的站台

Page 6: CasperJS

A minimal scraping script

What did we just do? we created a new Casper instance

we started it and opened http://casperjs.org/

once the page has been loaded, we asked to print the title of that webpage (the content of its <title> tag)

then we opened another url, http://phantomjs.org/

once the new page has been loaded, we asked to print its title too

we executed the whole process

Page 7: CasperJS

start(), then(), run(), exit()

start()

Signature: start(String url [, Function then])

Configures and starts Casper, then open the provided url and optionally adds the step provided by the then argument

then()

Signature: then(Function then)

run()

Signature: run(fn onComplete[, int time])

Runs the whole suite of steps and optionally executes a callback when they’ve all been done. Obviously, calling this method is mandatory in order to run the Casper navigation suite.

exit()

Signature: exit([int status])

Exits PhantomJS with an optional exit status code.

Note that the current Casper instance automatically binds the this keyword for you within step functions

Page 8: CasperJS

start(), then(), run(), exit()

Page 9: CasperJS

start(), then(), run(), exit()

?

Page 10: CasperJS

casper module – fill

Signature: fill(String selector, Object values[, Boolean submit])

Fills the fields of a form with given values and optionally submits it. Fields are referenced by their name attribute.

Page 11: CasperJS

click

click(Number x, Number y)

click(String selector)

Performs a click on the first element found matching the provided selector expression or at given coordinates if two numbers are passed

selector expression CSS3 selector strings

Xpath expressions

Page 12: CasperJS

evaluate

Signature: evaluate(Function fn[, arg1[, arg2[, …]]])

Evaluates an expression in the current page DOM context

Page 13: CasperJS

Understanding evaluate()

Think of the evaluate() method as a gate between the CasperJS environment and the one of the page you have opened;

Every time you pass a closure to evaluate(), you’re entering the page and execute code as if you were using the browser console.

Page 14: CasperJS

waitForSelector

Signature: waitForSelector(String selector[, Function then, Function onTimeout, Number timeout])

Waits until an element matching the provided selector expression exists in remote DOM to process any next step