PhantomJS - Métodos
PhantomJS es una plataforma para ayudar a ejecutar JavaScript sin un navegador. Para hacer eso, se utilizan los siguientes métodos, que ayudan a agregar la cookie, eliminar, borrar, salir del script, inyectar JS, etc.
Discutiremos más sobre estos métodos PhantomJS y su sintaxis en este capítulo. Métodos similares, es deciraddcookie, injectjs existe en el módulo de la página web, que se analizará en los capítulos siguientes.
PhantomJS expone los siguientes métodos que pueden ayudarnos a ejecutar JavaScript sin el navegador:
- addCookie
- clearCookie
- deleteCookie
- Exit
- InjectJS
Entendamos ahora estos métodos en detalle con ejemplos.
addCookie
El método addcookie se utiliza para agregar cookies y almacenar los datos. Es similar a cómo lo almacena el navegador. Se necesita un solo argumento que es un objeto con todas las propiedades de las cookies y la sintaxis se ve como se muestra a continuación:
Sintaxis
Su sintaxis es la siguiente:
phantom.addCookie ({
"name" : "cookie_name",
"value" : "cookie_value",
"domain" : "localhost"
});
El nombre, valor, dominio son propiedades obligatorias que se agregarán a la función addcookie. Si falta algo de esta propiedad en los objetos de la cookie, este método fallará.
name : Especifica el nombre de la cookie.
value : Especifica el valor de la cookie que se utilizará.
domain - dominio al que se aplicará la cookie.
Ejemplo
He aquí un ejemplo de addcookie método.
var page = require('webpage').create(),url = 'http://localhost/tasks/a.html';
page.open(url, function(status) {
if (status === 'success') {
phantom.addCookie({ //add name cookie1 with value = 1
name: 'cookie1',
value: '1',
domain: 'localhost'
});
phantom.addCookie({ // add cookie2 with value 2
name: 'cookie2',
value: '2',
domain: 'localhost'
});
phantom.addCookie({ // add cookie3 with value 3
name: 'cookie3',
value: '3',
domain: 'localhost'
});
console.log('Added 3 cookies');
console.log('Total cookies :'+phantom.cookies.length);
// will output the total cookies added to the url.
} else {
console.error('Cannot open file');
phantom.exit(1);
}
});
Ejemplo
a.html
<html>
<head>
<title>Welcome to phantomjs test page</title>
</head>
<body>
<h1>This is a test page</h1>
<h1>This is a test page</h1>
<h1>This is a test page</h1>
<h1>This is a test page</h1>
<h1>This is a test page</h1>
<h1>This is a test page</h1>
<h1>This is a test page</h1>
<h1>This is a test page</h1>
<h1>This is a test page</h1>
</body>
</html>
El programa anterior genera lo siguiente output.
Added 3 cookies
Total cookies :3
Los comentarios del código se explican por sí mismos.
eliminar cookies
Este método permite eliminar todas las cookies.
Sintaxis
Su sintaxis es la siguiente:
phantom.clearCookies();
Este concepto funciona de manera similar a eliminar las cookies del navegador seleccionando en el menú del navegador.
Ejemplo
He aquí un ejemplo de clearCookies método.
var page = require('webpage').create(),url = 'http://localhost/tasks/a.html';
page.open(url, function(status) {
if (status === 'success') {
phantom.addCookie({ //add name cookie1 with value = 1
name: 'cookie1',
value: '1',
domain: 'localhost'
});
phantom.addCookie({ // add cookie2 with value 2
name: 'cookie2',
value: '2',
domain: 'localhost'
});
phantom.addCookie({ // add cookie3 with value 3
name: 'cookie3',
value: '3',
domain: 'localhost'
});
console.log('Added 3 cookies');
console.log('Total cookies :'+phantom.cookies.length);
phantom.clearCookies();
console.log(
'After clearcookies method total cookies :' +phantom.cookies.length);
phantom.exit();
} else {
console.error('Cannot open file');
phantom.exit(1);
}
});
a.html
<html>
<head>
<title>Welcome to phantomjs test page</title>
</head>
<body>
<h1>This is a test page</h1>
<h1>This is a test page</h1>
<h1>This is a test page</h1>
<h1>This is a test page</h1>
<h1>This is a test page</h1>
<h1>This is a test page</h1>
<h1>This is a test page</h1>
<h1>This is a test page</h1>
<h1>This is a test page</h1>
</body>
</html>
El programa anterior genera lo siguiente output.
Added 3 cookies
Total cookies :3
After clearcookies method total cookies :0
deleteCookie
Elimine cualquier cookie en el CookieJarcon una propiedad 'name' que coincida con cookieName. Volverátrue, si se elimina correctamente; de otra manerafalse.
Sintaxis
Su sintaxis es la siguiente:
phantom.deleteCookie(cookiename);
Vamos a entender addcookie, clearcookies y deletecookie con la ayuda de un ejemplo.
Ejemplo
Aquí hay un ejemplo para demostrar el uso del método deleteCookie:
File: cookie.js
var page = require('webpage').create(),url = 'http://localhost/tasks/a.html';
page.open(url, function(status) {
if (status === 'success') {
phantom.addCookie({ //add name cookie1 with value = 1
name: 'cookie1',
value: '1',
domain: 'localhost'
});
phantom.addCookie({ // add cookie2 with value 2
name: 'cookie2',
value: '2',
domain: 'localhost'
});
phantom.addCookie({ // add cookie3 with value 3
name: 'cookie3',
value: '3',
domain: 'localhost'
});
console.log('Added 3 cookies');
console.log('Total cookies :'+phantom.cookies.length);
//will output the total cookies added to the url.
console.log("Deleting cookie2");
phantom.deleteCookie('cookie2');
console.log('Total cookies :'+phantom.cookies.length);
phantom.clearCookies();
console.log(
'After clearcookies method total cookies :' +phantom.cookies.length);
phantom.exit();
} else {
console.error('Cannot open file');
phantom.exit(1);
}
});
El programa anterior genera lo siguiente output.
phantomjs cookie.js
Added 3 cookies
Total cookies :3
Deleting cookie2
Total cookies :2
After clearcookies method total cookies :0
Salida
El método phantom.exit saldrá del script que había iniciado. Sale del programa con el valor de retorno mencionado. Da‘0’, si no se pasa ningún valor.
Sintaxis
Su sintaxis es la siguiente:
phantom.exit(value);
En caso de que no agregue phantom.exit, entonces la línea de comando asume que la ejecución aún está activa y no se completará.
Ejemplo
Veamos un ejemplo para comprender el uso de la exit método.
console.log('Welcome to phantomJs'); // outputs Welcome to phantomJS
var a = 1;
if (a === 1) {
console.log('Exit 1'); //outputs Exit 1
phantom.exit(); // Code exits.
} else {
console.log('Exit 2');
phantom.exit(1);
}
El programa anterior genera lo siguiente output.
phantomjs exit.js
Welcome to phantomJs
Exit 1
No se ejecutará ningún fragmento de código después de phantom.exit, ya que phantom.exit es un método para finalizar el script.
injectJs
InjectJs se usa para agregar addtionaljsarchivos en fantasma. Si el archivo no se encuentra en el actualdirectory librarypath, entonces la propiedad fantasma (phantom.libraryPath) se usa como un lugar adicional para rastrear la ruta. Vuelvetrue si la adición del archivo es exitosa de lo contrario false por falla, en caso de que no pueda ubicar el archivo.
Sintaxis
Su sintaxis es la siguiente:
phantom.injectJs(filename);
Ejemplo
Veamos el siguiente ejemplo para comprender el uso de injectJs.
Filename: inject.js
console.log(“Added file”);
File name: addfile.js
var addfile = injectJs(inject.js);
console.log(addfile);
phantom.exit();
Salida
Command - C: \ phantomjs \ bin> phantomjs addfile.js
Added file // coming from inject.js
true
En el ejemplo anterior, addfile.js llama al archivo inject.jsusando injectJs. Cuando ejecuta addfile.js, el archivo console.log presente en inject.js se muestra en la salida. También se muestra verdadero para la variable addfile ya que el archivo inject.js se agregó correctamente.