📜  PhantomJS-方法

📅  最后修改于: 2020-10-21 05:34:25             🧑  作者: Mango


PhantomJS是一个无需浏览器即可帮助执行JavaScript的平台。为此,使用以下方法,这些方法有助于添加Cookie,删除,清除,退出脚本,注入JS等。

我们将在本章中进一步讨论这些PhantomJS方法及其语法。网页模块上存在类似的方法,例如addcookie,injectjs ,将在后续章节中进行讨论。

PhantomJS公开了以下方法,可以帮助我们在没有浏览器的情况下执行JavaScript-

  • addCookie
  • clearCookie
  • deleteCookie
  • 出口
  • InjectJS

现在让我们通过示例详细了解这些方法。

addCookie

addcookie方法用于添加cookie并存储在数据中。这类似于浏览器的存储方式。它采用一个参数,该参数是具有cookie的所有属性的对象,其语法如下所示-

句法

它的语法如下-

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

名称,值,域是要添加到addcookie函数中的强制属性。如果cookie对象中缺少任何此属性,则此方法将失败。

  • 名称-指定cookie的名称。

  • value-指定要使用的cookie的值。

  • -将Cookie应用于的域。

这是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

Welcome to phantomjs test page
   
   
   
      

This is a test page

This is a test page

This is a test page

This is a test page

This is a test page

This is a test page

This is a test page

This is a test page

This is a test page

上面的程序生成以下输出

Added 3 cookies 
Total cookies :3

代码注释不言自明。

清除Cookies

此方法允许删除所有cookie。

句法

它的语法如下-

phantom.clearCookies();

此概念的作用类似于通过在浏览器菜单中进行选择来删除浏览器cookie。

这是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

Welcome to phantomjs test page
   
   
   
      

This is a test page

This is a test page

This is a test page

This is a test page

This is a test page

This is a test page

This is a test page

This is a test page

This is a test page

上面的程序生成以下输出

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

deleteCookie

删除CookieJar中所有具有与cookieName相匹配的“名称”属性的cookie。如果成功删除,它将返回true 。否则为

句法

它的语法如下-

phantom.deleteCookie(cookiename);

让我们借助示例了解addcookie,clearcookiesdeletecookie

这是一个示例来演示deleteCookie方法的使用-

档案: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); 
   } 
});

上面的程序生成以下输出

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

上面的程序生成以下输出

phantomjs exit.js

Welcome to phantomJs 
Exit 1 

phantom.exit之后的任何代码都不会执行,因为phantom.exit是一种结束脚本的方法。

注射

InjectJs用于添加在幻象addtionaljs文件。如果在当前目录librarypath中找不到该文件,则将phantom属性(phantom.libraryPath)用作跟踪路径的附加位置。如果文件添加成功,则返回true;否则,如果无法找到文件,则返回false

句法

它的语法如下-

phantom.injectJs(filename);

让我们看下面的示例,了解injectJs的用法

档名:inject.js

console.log(“Added file”); 

档案名称:addfile.js

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

输出

命令-C:\ phantomjs \ bin> phantomjs addfile.js

Added file // coming from inject.js
true

在上述例子中,呼叫addfile.js使用inject.js injectJs该文件。执行addfile.js时,输出中将显示inject.js中存在的console.log。由于成功添加了文件inject.js,因此addfile变量也显示true。