PhantomJS-방법

PhantomJS는 브라우저없이 JavaScript를 실행할 수있는 플랫폼입니다. 이를 위해 쿠키 추가, 삭제, 지우기, 스크립트 종료, JS 주입 등에 도움이되는 다음 방법이 사용됩니다.

이 장에서 이러한 PhantomJS 메서드와 구문에 대해 자세히 설명합니다. 유사한 방법 즉addcookie, injectjs 웹 페이지 모듈에 존재하며, 이에 대해서는 다음 장에서 설명합니다.

PhantomJS는 브라우저없이 JavaScript를 실행하는 데 도움이되는 다음 메소드를 제공합니다.

  • addCookie
  • clearCookie
  • deleteCookie
  • Exit
  • InjectJS

이제 예제를 통해 이러한 방법을 자세히 이해하겠습니다.

addCookie

addcookie 메소드는 쿠키를 추가하고 데이터를 저장하는 데 사용됩니다. 브라우저가 저장하는 방법과 유사합니다. 쿠키의 모든 속성을 가진 객체 인 단일 인수를 취하며 이에 대한 구문은 아래와 같습니다.

통사론

구문은 다음과 같습니다.

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

이름, 값, 도메인은 addcookie 기능에 추가되는 필수 속성입니다. 이 속성 중 하나라도 쿠키 개체에 누락 된 경우이 메서드는 실패합니다.

  • name − 쿠키의 이름을 지정합니다.

  • value − 사용할 쿠키의 값을 지정합니다.

  • domain − 쿠키가 적용될 도메인.

다음은 addcookie 방법.

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); 
   } 
});

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>

위의 프로그램은 다음을 생성합니다. output.

Added 3 cookies 
Total cookies :3

코드 주석은 자명합니다.

쿠키를 삭제하다

이 방법을 사용하면 모든 쿠키를 삭제할 수 있습니다.

통사론

구문은 다음과 같습니다.

phantom.clearCookies();

이 개념은 브라우저 메뉴에서 선택하여 브라우저 쿠키를 삭제하는 것과 유사하게 작동합니다.

다음은 clearCookies 방법.

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>

위의 프로그램은 다음을 생성합니다. output.

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

deleteCookie

쿠키를 삭제하십시오. CookieJar'name'속성이 cookieName과 일치합니다. 돌아올 것이다true, 성공적으로 삭제 된 경우; 그렇지 않으면false.

통사론

구문은 다음과 같습니다.

phantom.deleteCookie(cookiename);

이해하자 addcookie, clearcookiesdeletecookie 예의 도움으로.

다음은 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); 
   } 
});

위의 프로그램은 다음을 생성합니다. output.

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

출구

phantom.exit 메소드는 시작된 스크립트를 종료합니다. 반환 값이 언급 된 상태로 프로그램을 종료합니다. 그것은 준다‘0’, 전달 된 값이없는 경우.

통사론

구문은 다음과 같습니다.

phantom.exit(value);

추가하지 않는 경우 phantom.exit이면 명령 줄은 실행이 아직 진행 중이며 완료되지 않을 것이라고 가정합니다.

사용을 이해하기위한 예를 살펴 보겠습니다. exit 방법.

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); 
}

위의 프로그램은 다음을 생성합니다. output.

phantomjs exit.js

Welcome to phantomJs 
Exit 1

phantom.exit는 스크립트를 종료하는 방법이므로 phantom.exit 이후의 코드는 실행되지 않습니다.

injectJs

InjectJs를 사용하여 addtionaljs팬텀의 파일. 현재 파일을 찾을 수없는 경우directory librarypath이면 phantom 속성 (phantom.libraryPath)이 경로를 추적하는 추가 위치로 사용됩니다. 그것은 반환true 파일 추가가 성공하면 그렇지 않으면 false 실패의 경우 파일을 찾을 수없는 경우.

통사론

구문은 다음과 같습니다.

phantom.injectJs(filename);

사용을 이해하기 위해 다음 예제를 살펴 보겠습니다. injectJs.

Filename: inject.js

console.log(“Added file”);

File name: addfile.js

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

산출

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

Added file // coming from inject.js
true

위의 예에서 addfile.js 파일을 호출 inject.jsinjectJs 사용. addfile.js를 실행하면 inject.js에있는 console.log가 출력에 표시됩니다. 또한 inject.js 파일이 성공적으로 추가되었으므로 addfile 변수에 대해서도 true를 표시합니다.