发布于 2015-09-02 08:26:33 | 681 次阅读 | 评论: 0 | 来源: PHPERZ

window对象

在使用phantom时,我首先关注的是DOM和BOM接口。不过这不是一个问题,看了下面的代码就能了解:

// test.js
console.log(window === this);
phantom.exit();

运行:

phantomjs ./test.js

结果为 true。也就是说,就像浏览器环境一样,我们的代码运行在window环境下,可以很方便地进行DOM方面的操作。

注:如果使用web page模块打开页面,则请不要在此window对象下进行任何DOM相关的操作,因为这个window并不是page对象内的window。如果想要执行dom相关操作,请参阅 page.evaluate()部分。


phantom对象

之前的例子中我们已经初步认识了phantom对象。它的功能是定义和控制phantom运行环境的参数和流程。关键的API有:

  1. phantom.args String[]
    获取传给本JS程序的参数,需要与 system.args进行区分(system模块详见下文),后者表示传给phantomjs引擎的参数。例如 phantomjs ./test.js http://baidu.com这句语句,通过 phantom.args,我们能得到的参数列表为 ["http://baidu.com"],而通过 system.args则得到 ["./test.js", "http://baidu.com"]这样的参数列表。差异就在于是否包含当前脚本名称。不过 phantom.scriptName这个API提供了获取脚本名称的功能。
  2. phantom.cookies Object[]
    获取或设置cookies,不过对于设置建议使用其他的API完成。同时相关的API还有:
    • phantom.addCookie(Object) Boolean:添加cookie值
    • phantom.deleteCookie(cookieName) Boolean:删除指定Cookie值
    • phantom.clearCookies():清空所有的cookie
    • phantom.cookiesEnabled Boolean:获取或设置是否支持cookie
  3. phantom.injectJs(fileName) Boolean:
    把 指定的外部JS文件注入到当前环境。执行这个方法时,phantomjs首先会从当前目录检索此文件,如果找不到,则再到 phantom.libraryPath指定的路径寻找。 phantom.libraryPath这个API基本上就是为 phantom.injectJs()服务的。
  4. phantom.onError
    当页面存在js错误,且没有被 page.onError处理,则会被此handler捕获。下面是使用此API的一个例子。由于phantom环境下代码调试很困难,了解这些错误捕获的API也许会对我们的实际使用有所帮助。
    phantom.onError = function(msg, trace) {
        var msgStack = ['PHANTOM ERROR: ' + msg];
        if (trace && trace.length) {
            msgStack.push('TRACE:');
            trace.forEach(function(t) {
                msgStack.push(' -> ' + (t.file || t.sourceURL) + ': ' + t.line + (t.function ? ' (in function ' + t.function +')' : ''));
            });
        }
        console.error(msgStack.join('\n'));
        phantom.exit(1);
    };
  5. phantom.exit(returnValue)
    这个API已经见过多次了,它的作用是退出程序,可以设置一个退出代码,默认是0。
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务