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.