History: PhantomJS and CasperJS
Source of version: 26 (current)
Copy to clipboard
! {{page}} See ((Browser Automation)). {SPLIT()} {QUOTE()}[https://github.com/casperjs/casperjs|CasperJS] --is-- was 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-- was 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-- was an optimal solution for fast headless testing, site scraping, pages capture, SVG renderer, network monitoring and many other use cases. {QUOTE} {SPLIT} !! How to install CasperJS and PhantomJS for Tiki ^ Starting in ((Tiki18)), PhantomJS and CasperJS are available via ((Packages))^ !!!# Test the installation The simplest is to use: ((PluginCasperJS)). Otherwise, 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 !!!# Expose them system-wide (optional) In case you need to run some custom programs on a server which require casperjs and phantomjs, you may expose those programs to the whole server so that they can get accessed system wide from the usual -+/usr/bin+- folder where all programs are located on symlinked. Imagine that your root tiki folder is -+/var/www/html/+-. Then you can create a symbolic link for each of the programs: {CODE(colors="shell" ln="1")} ln -s /var/www/html/bin/casperjs /usr/bin/casperjs ln -s /var/www/html/bin/phantomjs /usr/bin/phantomjs {CODE} This way you will be able to call casperjs or phantomjs from anywere in the server, if you need it for your other custom scripts doing scraping for you sever-side. !! 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} {CODE(caption="To test, and check version")} [root@ ~]# phantomjs -v 1.9.8 {CODE} !! Related links * ((dev:PhantomJS)) * ((dev:Browser Automation)) !! Open Hub {HTML()}<script type='text/javascript' src='https://www.openhub.net/p/casperjs/widgets/project_factoids_stats?format=js'></script>{HTML} {HTML()}<script type='text/javascript' src='https://www.openhub.net/p/slimerjs/widgets/project_factoids_stats?format=js'></script>{HTML} {HTML()}<script type='text/javascript' src='https://www.openhub.net/p/phantomjs/widgets/project_factoids_stats?format=js'></script>{HTML} -=alias=- * (alias(PhantomJS)) | (alias(CasperJS))