PhantomJS - Métodos

PhantomJS é uma plataforma para ajudar a executar JavaScript sem um navegador. Para isso, são utilizados os seguintes métodos, que auxiliam na adição do cookie, exclusão, limpeza, saída do script, injeção de JS, etc.

Discutiremos mais sobre esses métodos PhantomJS e sua sintaxe neste capítulo. Métodos semelhantes, isto éaddcookie, injectjs existe no módulo da página da Web, que será discutido nos capítulos subsequentes.

PhantomJS expõe os seguintes métodos que podem nos ajudar a executar JavaScript sem o navegador -

  • addCookie
  • clearCookie
  • deleteCookie
  • Exit
  • InjectJS

Vamos agora entender esses métodos em detalhes com exemplos.

addCookie

O método addcookie é usado para adicionar cookies e armazenar os dados. É semelhante a como o navegador o armazena. Leva um único argumento que é um objeto com todas as propriedades dos cookies e a sintaxe para ele se parece com a mostrada abaixo -

Sintaxe

Sua sintaxe é a seguinte -

phantom.addCookie ({ 
   "name" : "cookie_name",  
   "value" : "cookie_value", 
   "domain" : "localhost" 
});

O nome, valor e domínio são propriedades obrigatórias a serem adicionadas à função addcookie. Se alguma dessas propriedades estiver faltando nos objetos de cookie, esse método falhará.

  • name - especifica o nome do cookie.

  • value - especifica o valor do cookie a ser usado.

  • domain - domínio ao qual o cookie será aplicado.

Exemplo

Aqui está um exemplo do 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); 
   } 
});

Exemplo

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>

O programa acima gera o seguinte output.

Added 3 cookies 
Total cookies :3

Os comentários do código são autoexplicativos.

clearCookies

Este método permite excluir todos os cookies.

Sintaxe

Sua sintaxe é a seguinte -

phantom.clearCookies();

Esse conceito funciona de forma semelhante à exclusão dos cookies do navegador selecionando no menu do navegador.

Exemplo

Aqui está um exemplo do 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>

O programa acima gera o seguinte output.

Added 3 cookies 
Total cookies :3 
After clearcookies method total cookies :0

deleteCookie

Exclua qualquer cookie no CookieJarcom uma propriedade 'name' correspondente a cookieName. Vai voltartrue, se excluído com sucesso; de outra formafalse.

Sintaxe

Sua sintaxe é a seguinte -

phantom.deleteCookie(cookiename);

Vamos entender addcookie, clearcookies e deletecookie com a ajuda de um exemplo.

Exemplo

Aqui está um exemplo para demonstrar o uso do 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); 
   } 
});

O programa acima gera o seguinte output.

phantomjs cookie.js
Added 3 cookies
Total cookies :3
Deleting cookie2
Total cookies :2
After clearcookies method total cookies :0

Saída

O método phantom.exit sairá do script que foi iniciado. Sai do programa com o valor de retorno mencionado. Dá‘0’, se nenhum valor for passado.

Sintaxe

Sua sintaxe é a seguinte -

phantom.exit(value);

Caso você não adicione phantom.exit, então a linha de comando assume que a execução ainda está ativa e não será concluída.

Exemplo

Vejamos um exemplo para entender o uso do 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); 
}

O programa acima gera o seguinte output.

phantomjs exit.js

Welcome to phantomJs 
Exit 1

Qualquer trecho de código após phantom.exit não será executado, pois phantom.exit é um método para finalizar o script.

injectJs

InjectJs é usado para adicionar addtionaljsarquivos em fantasma. Se o arquivo não for encontrado no atualdirectory librarypath, a propriedade fantasma (phantom.libraryPath) é usada como um local adicional para rastrear o caminho. Retornatrue se a adição do arquivo for bem-sucedida de outra forma false em caso de falha, caso não seja possível localizar o arquivo.

Sintaxe

Sua sintaxe é a seguinte -

phantom.injectJs(filename);

Exemplo

Vejamos o exemplo a seguir para entender o uso de injectJs.

Filename: inject.js

console.log(“Added file”);

File name: addfile.js

var addfile =  injectJs(inject.js);
console.log(addfile);
phantom.exit();

Resultado

Command - C: \ phantomjs \ bin> phantomjs addfile.js

Added file // coming from inject.js
true

No exemplo acima, addfile.js chama o arquivo inject.jsusando injectJs. Quando você executa addfile.js, o console.log presente em inject.js é mostrado na saída. Também é verdadeiro para a variável addfile, uma vez que o arquivo inject.js foi adicionado com sucesso.