History: PhantomJS and CasperJS
Source of version: 8
Copy to clipboard
! {{page}} Tested in ((Tiki17)) but will likely work on previous versions. This is for advanced users. {QUOTE()}[http://casperjs.org/|CasperJS] is a navigation scripting & testing utility for PhantomJS and SlimerJS (still experimental). It eases the process of defining a full navigation scenario and provides useful high-level functions, methods & syntactic sugar for doing common tasks such as: defining & ordering navigation steps filling forms clicking links capturing screenshots of a page (or an area) making assertions on remote DOM logging & events downloading resources, even binary ones catching errors and react accordingly writing functional test suites, exporting results as JUnit XML (xUnit) {QUOTE} {QUOTE()} [http://phantomjs.org/|PhantomJS] is a headless WebKit with JavaScript API. It has fast and native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG. PhantomJS is an optimal solution for fast headless testing, site scraping, pages capture, SVG renderer, network monitoring and many other use cases. {QUOTE} !! How to install CasperJS and PhantomJS for Tiki Step 1) Add, in the composer.json, the following lines to "post-install-cmd" and "post-update-cmd" of the "scripts" section: {CODE()} "PhantomInstaller\\Installer::installPhantomJS", "CasperJsInstaller\\Installer::install" {CODE} Step 2) Install the following PHP packages (by running these commands on the command line): {CODE()} composer require --prefer-dist "jerome-breton/casperjs-installer:dev-master" composer require --prefer-dist "phpcasperjs/phpcasperjs" {CODE} Step 3) Use the following script to test (in the root of tiki, adjust path if other folder): Create a file (ex.: scrape.php) with the following content {CODE()}<?php // Require composer autoload require_once __DIR__ . '/vendor/autoload.php'; use Browser\Casper; $casper = new Casper(__DIR__ . '/bin/'); $casper->setOptions(array( 'ignore-ssl-errors' => 'yes' )); // screen shoot of homepage $casper ->start('http://tiki.org') ->setViewPort(1024,800) ->waitForText('About Tiki') ->wait(200) ->capture( array( 'top' => 0, 'left' => 0, 'width' => 1024, 'height' => 800 ), 'custom-capture.png' ) ->run(); echo "The image was captured <br> <br> <img alt='' border='0' src='custom-capture.png'>"; {CODE} Once you visit the newly created file, it will fetch the info at http://tiki.org and generate custom-capture.png !! Troubleshooting If you get the following error, just stop the script and try again later {CODE()} > Tiki\Composer\BootstrapCompiler::build > Tiki\Composer\CleanVendors::clean > PhantomInstaller\Installer::installPhantomJS - Installing phantomjs (1.9.8) Downloading: Connecting... Could not fetch https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-x86_64.tar.bz2, please create a bitbucket OAuth token to to go over the API rate limit Follow the instructions on https://confluence.atlassian.com/bitbucket/oauth-on-bitbucket-cloud-238027431.html to create a consumer. It will be stored in "/root/.composer/auth.json" for future use by Composer. Ensure you enter a "Callback URL" or it will not be possible to create an Access Token (this callback url will not be used by composer) Consumer Key (hidden): {CODE} Related: ((dev:Browser Automation)) -=alias=- * (alias(PhantomJS)) | (alias(CasperJS))