Download the PHP package pachico/voyeur without Composer

On this page you can find all versions of the php package pachico/voyeur. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package voyeur

Voyeur

Build Status codecov.io Codacy Badge

Voyeur is a tool that takes screenshots of websites by connecting to either Selenium or Phantomjs. It will allow you to resize the browser (in case you want to test CSS breakpoints) and execute any Javascript before you take the shot (typically useful if you want to interact with a page, like a login process).

Installation

I encourage you to use Composer to install it to the latest stable version, but you can also download manually. (Anyway, you will be forced to use Composer to install its dependencies.)

require pachico/voyeur dev-master

Usage

Voyeur uses metaphoric class names so you know what each one is supposed to do. As a Voyeur, you need a Camera (which is the Selenium/Phantomjs instance it will connect to), a Film (which is the storage where your screenshots are saved) and a number of Shots (which are the web pages you want to capture, along with the browser size, scripts to execute, etc.).

Simple example

This is what a typical usage looks like:

use \Pachico\Voyeur\Voyeur as Voyeur,
    \Pachico\Voyeur\Shot as Shot,
    \Pachico\Voyeur\Film as Film,
    \Pachico\Voyeur\Camera as Camera;

// We create a Camera indicating the path where Selenium/Phantomjs is running
$camera = new Camera(Camera::DRIVER_NAME_PHAMTOMJS, 'http://localhost:8910/');

// We indicate what is the folder path where screenshots will be saved 
$film = new Film('/tmp/voyeur/');

// We create a Voyeur instance
$voyeur = new Voyeur($camera, $film);

// We instanciate as many Shots as we want url and destination file 
$shot = new Shot('http://www.example.com/', '/example/home.png');

// Add the Shot to Voyeur and shot
$voyeur
    ->add_shot($shot)
    ->shoot();

A real complete example can be found under test/example/example.php

Resizing browser

You might want to capture the same page but with different browser sizes. You can do this by creating multiple Shots, each one with a different size, and add them to Voyeur.

$shot = new Shot('http://www.example.com/',  '/example/home.png');
$shot->set_window_size(1024, 800); //width and height in pixels

Execute Javacript

It might be a necessity to interact with a webpage before you grab a screenshot (ie, you might want to login, or press a button that will load asyncronous data). You can tell any Shot to execute as many Javascript files as you want by indicating their paths before they are added to Voyeur.

$shot = new Shot('http://www.example.com/',  '/example/home.png');
$shot->add_scripts('/path/to/your/script.js'); // absolute path to the file

Note: You can add multiple scripts to every Shot. They will be executed in the same order you added them.

Wait before screenshot is taken

However, asyncronous content might take some time before it's loaded and you don't want to take a screenshot before all the content has been fully loaded.

Just wait some time

You can solve this by telling every Shot to wait a certain amount of milliseconds to take the screenshot:

$shot = new Shot('http://www.example.com/',  '/example/home.png');
$shot->add_wait_for(3000); // It will wait 3 seconds before the shot is done

Note: You can add multiple waiting policies per Shot. They will be executed in the same order you added them.

Wait, but until...

On the other hand, you don't want to wait more than what's required. This is why this method accepts another parameter that might speed up your screen captures.

$shot = new Shot('http://www.example.com/',  '/example/home.png');
$shot->add_wait_for(10000, '$(".somediv").is(":visible")'); 

For this example I'm using jQuery but any Javascript assertion will work. This will be interpreted as:

Wait until the element with class "somediv" is visible. It if didn't become visible in less than 10 seconds, shoot anyway.

Camera

Each Voyeur instance can have only one Camera instance. You will need to provide to its constructor the name of the browser and the url of the Selenium/Phantomjs instance:

$camera = new Camera(Camera::DRIVER_NAME_PHAMTOMJS, 'http://localhost:8910/');

Selenium

Running Selenium is very easy and should work straight out of the box whenever, at least, Firefox is available. Download Selenium Server Standalone from http://www.seleniumhq.org/download/ and run it with:

java -jar selenium-server-standalone-[whatever-version].jar

You will see in console the url you have to provide to the Camera constructor. It will be something like

http://127.0.0.1:4444/wd/hub

If you are executing Selenium and Voyeur in difference machines, make sure you set up the ip appropriately.

Phantomjs

Phantomjs is a headless browser which is much faster than Firefox, Chrome or others. Most linux distributions have a version in their repositories but you can download it from http://phantomjs.org/. Once installed, execute it in webdriver mode

phantomjs --webdriver=8910

Same as with Selenium, you will have to privide the url of your Phantomjs instance to the Camera constructor.

Shot

When creating a Shot, you can also specify an id for it passing it as third parameter to its constructor. It can be handy to use it as reference when Voyeur is loaded with multiple Shots. If not specified, it will internally create a unique one.

$shot = new Shot('http://www.example.com/', '/example/home.png', $anystring);

Log

If you run it via CLI (recommended) you can also enable the output log as third parameter in Voyeur constructor:

// third parameter (true) enables CLI log
$voyeur = new Voyeur($camera, $film, true);

Contributing

All suggestions, bug fixes, and feature requests are very welcome! Thanks in advance!

License

Copyright (c) 2016-2019 Mariano F.co Benítez Mulet

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


All versions of voyeur with dependencies

PHP Build Version
Package Version
Requires php Version >=5.4.0
behat/mink-selenium2-driver Version 1.3
league/climate Version 3.2.0
league/flysystem Version 1.0.16
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package pachico/voyeur contains the following files

Loading the files please wait ....