PhantomJS 有很多网页API,它提供了所有细节. PhantomJS可用于测试,如获取页面内容,获取屏幕共享,将页面转换为pdf等.市场上有许多流行的测试库,可与PhantomJS一起使用,可用于测试.
一些可以与PhantomJS一起使用的流行框架如下&&;
Mocha
Jasmine
Qunit
Hiro
Laika
Buster.JS
WebDriver
示例 - 带有Qunit的PhantomJS
(function () { var url, timeout,args = require('system').args, page = require('webpage').create(); url = args[1]; timeout = parseInt(10, 10); page.onConsoleMessage = function (msg) { //prints all the console messages console.log(msg); }; page.onInitialized = function () { // called when page is initialized page.evaluate(callqunit); }; page.onCallback = function (message) { // called from var result, failed; if (message) { if (message.name === 'QUnit.done') { result = message.data; failed = !result || !result.total || result.failed; if (!result.total) { console.error('No tests were executed'); } pageexit(failed ? 1 : 0); } } }; page.open(url, function (status) { // opening page if (status !== 'success') { console.error('Unable to access network: ' + status); pageexit(1); } else { var checkqunit = page.evaluate(function () { //evaluating page and chcking if qunit object is present on the given page url return (typeof QUnit === 'undefined' || !QUnit); }); if (checkqunit) { console.error('Qunit scripts are not present on the page'); pageexit(1); } //timeout of 10seconds is used otherwise message from console will get printed. setTimeout(function () { console.error('The specified timeout of ' + timeout + ' seconds has expired. Aborting...'); pageexit(1); }, timeout * 1000); } }); function callqunit() {
qunit.html
QUnit Example
输出
命令 : phantomjs qunit.js http://localhost/tasks/qunit.html
上述程序生成以下输出.
{"passed":3,"failed":2,"total":5,"runtime":23}Time taken is 23ms to run 5 tests.3 passed, 2 failed.