mirror of
https://github.com/puppeteer/puppeteer
synced 2024-06-14 14:02:48 +00:00
add phantomjs examples under third_party/phantomjs/examples
This commit is contained in:
parent
2de672ed1b
commit
10d388b9b1
10
third_party/phantomjs/examples/arguments.js
vendored
Normal file
10
third_party/phantomjs/examples/arguments.js
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
"use strict";
|
||||
var system = require('system');
|
||||
if (system.args.length === 1) {
|
||||
console.log('Try to pass some args when invoking this script!');
|
||||
} else {
|
||||
system.args.forEach(function (arg, i) {
|
||||
console.log(i + ': ' + arg);
|
||||
});
|
||||
}
|
||||
phantom.exit();
|
28
third_party/phantomjs/examples/child_process-examples.js
vendored
Normal file
28
third_party/phantomjs/examples/child_process-examples.js
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
"use strict";
|
||||
var spawn = require("child_process").spawn
|
||||
var execFile = require("child_process").execFile
|
||||
|
||||
var child = spawn("ls", ["-lF", "/rooot"])
|
||||
|
||||
child.stdout.on("data", function (data) {
|
||||
console.log("spawnSTDOUT:", JSON.stringify(data))
|
||||
})
|
||||
|
||||
child.stderr.on("data", function (data) {
|
||||
console.log("spawnSTDERR:", JSON.stringify(data))
|
||||
})
|
||||
|
||||
child.on("exit", function (code) {
|
||||
console.log("spawnEXIT:", code)
|
||||
})
|
||||
|
||||
//child.kill("SIGKILL")
|
||||
|
||||
execFile("ls", ["-lF", "/usr"], null, function (err, stdout, stderr) {
|
||||
console.log("execFileSTDOUT:", JSON.stringify(stdout))
|
||||
console.log("execFileSTDERR:", JSON.stringify(stderr))
|
||||
})
|
||||
|
||||
setTimeout(function () {
|
||||
phantom.exit(0)
|
||||
}, 2000)
|
10
third_party/phantomjs/examples/countdown.js
vendored
Normal file
10
third_party/phantomjs/examples/countdown.js
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
"use strict";
|
||||
var t = 10,
|
||||
interval = setInterval(function(){
|
||||
if ( t > 0 ) {
|
||||
console.log(t--);
|
||||
} else {
|
||||
console.log("BLAST OFF!");
|
||||
phantom.exit();
|
||||
}
|
||||
}, 1000);
|
60
third_party/phantomjs/examples/detectsniff.js
vendored
Normal file
60
third_party/phantomjs/examples/detectsniff.js
vendored
Normal file
@ -0,0 +1,60 @@
|
||||
// Detect if a web page sniffs the user agent or not.
|
||||
|
||||
"use strict";
|
||||
var page = require('webpage').create(),
|
||||
system = require('system'),
|
||||
sniffed,
|
||||
address;
|
||||
|
||||
page.onInitialized = function () {
|
||||
page.evaluate(function () {
|
||||
|
||||
(function () {
|
||||
var userAgent = window.navigator.userAgent,
|
||||
platform = window.navigator.platform;
|
||||
|
||||
window.navigator = {
|
||||
appCodeName: 'Mozilla',
|
||||
appName: 'Netscape',
|
||||
cookieEnabled: false,
|
||||
sniffed: false
|
||||
};
|
||||
|
||||
window.navigator.__defineGetter__('userAgent', function () {
|
||||
window.navigator.sniffed = true;
|
||||
return userAgent;
|
||||
});
|
||||
|
||||
window.navigator.__defineGetter__('platform', function () {
|
||||
window.navigator.sniffed = true;
|
||||
return platform;
|
||||
});
|
||||
})();
|
||||
});
|
||||
};
|
||||
|
||||
if (system.args.length === 1) {
|
||||
console.log('Usage: detectsniff.js <some URL>');
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
address = system.args[1];
|
||||
console.log('Checking ' + address + '...');
|
||||
page.open(address, function (status) {
|
||||
if (status !== 'success') {
|
||||
console.log('FAIL to load the address');
|
||||
phantom.exit();
|
||||
} else {
|
||||
window.setTimeout(function () {
|
||||
sniffed = page.evaluate(function () {
|
||||
return navigator.sniffed;
|
||||
});
|
||||
if (sniffed) {
|
||||
console.log('The page tried to sniff the user agent.');
|
||||
} else {
|
||||
console.log('The page did not try to sniff the user agent.');
|
||||
}
|
||||
phantom.exit();
|
||||
}, 1500);
|
||||
}
|
||||
});
|
||||
}
|
24
third_party/phantomjs/examples/echoToFile.js
vendored
Normal file
24
third_party/phantomjs/examples/echoToFile.js
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
// echoToFile.js - Write in a given file all the parameters passed on the CLI
|
||||
"use strict";
|
||||
var fs = require('fs'),
|
||||
system = require('system');
|
||||
|
||||
if (system.args.length < 3) {
|
||||
console.log("Usage: echoToFile.js DESTINATION_FILE <arguments to echo...>");
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
var content = '',
|
||||
f = null,
|
||||
i;
|
||||
for ( i= 2; i < system.args.length; ++i ) {
|
||||
content += system.args[i] + (i === system.args.length-1 ? '' : ' ');
|
||||
}
|
||||
|
||||
try {
|
||||
fs.write(system.args[1], content, 'w');
|
||||
} catch(e) {
|
||||
console.log(e);
|
||||
}
|
||||
|
||||
phantom.exit();
|
||||
}
|
30
third_party/phantomjs/examples/features.js
vendored
Normal file
30
third_party/phantomjs/examples/features.js
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
"use strict";
|
||||
var feature, supported = [], unsupported = [];
|
||||
|
||||
phantom.injectJs('modernizr.js');
|
||||
console.log('Detected features (using Modernizr ' + Modernizr._version + '):');
|
||||
for (feature in Modernizr) {
|
||||
if (Modernizr.hasOwnProperty(feature)) {
|
||||
if (feature[0] !== '_' && typeof Modernizr[feature] !== 'function' &&
|
||||
feature !== 'input' && feature !== 'inputtypes') {
|
||||
if (Modernizr[feature]) {
|
||||
supported.push(feature);
|
||||
} else {
|
||||
unsupported.push(feature);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
console.log('');
|
||||
console.log('Supported:');
|
||||
supported.forEach(function (e) {
|
||||
console.log(' ' + e);
|
||||
});
|
||||
|
||||
console.log('');
|
||||
console.log('Not supported:');
|
||||
unsupported.forEach(function (e) {
|
||||
console.log(' ' + e);
|
||||
});
|
||||
phantom.exit();
|
10
third_party/phantomjs/examples/fibo.js
vendored
Normal file
10
third_party/phantomjs/examples/fibo.js
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
"use strict";
|
||||
var fibs = [0, 1];
|
||||
var ticker = window.setInterval(function () {
|
||||
console.log(fibs[fibs.length - 1]);
|
||||
fibs.push(fibs[fibs.length - 1] + fibs[fibs.length - 2]);
|
||||
if (fibs.length > 10) {
|
||||
window.clearInterval(ticker);
|
||||
phantom.exit();
|
||||
}
|
||||
}, 300);
|
3
third_party/phantomjs/examples/hello.js
vendored
Normal file
3
third_party/phantomjs/examples/hello.js
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
"use strict";
|
||||
console.log('Hello, world!');
|
||||
phantom.exit();
|
26
third_party/phantomjs/examples/injectme.js
vendored
Normal file
26
third_party/phantomjs/examples/injectme.js
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
// Use 'page.injectJs()' to load the script itself in the Page context
|
||||
|
||||
"use strict";
|
||||
if ( typeof(phantom) !== "undefined" ) {
|
||||
var page = require('webpage').create();
|
||||
|
||||
// Route "console.log()" calls from within the Page context to the main Phantom context (i.e. current "this")
|
||||
page.onConsoleMessage = function(msg) {
|
||||
console.log(msg);
|
||||
};
|
||||
|
||||
page.onAlert = function(msg) {
|
||||
console.log(msg);
|
||||
};
|
||||
|
||||
console.log("* Script running in the Phantom context.");
|
||||
console.log("* Script will 'inject' itself in a page...");
|
||||
page.open("about:blank", function(status) {
|
||||
if ( status === "success" ) {
|
||||
console.log(page.injectJs("injectme.js") ? "... done injecting itself!" : "... fail! Check the $PWD?!");
|
||||
}
|
||||
phantom.exit();
|
||||
});
|
||||
} else {
|
||||
alert("* Script running in the Page context.");
|
||||
}
|
24
third_party/phantomjs/examples/loadspeed.js
vendored
Normal file
24
third_party/phantomjs/examples/loadspeed.js
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
"use strict";
|
||||
var page = require('webpage').create(),
|
||||
system = require('system'),
|
||||
t, address;
|
||||
|
||||
if (system.args.length === 1) {
|
||||
console.log('Usage: loadspeed.js <some URL>');
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
t = Date.now();
|
||||
address = system.args[1];
|
||||
page.open(address, function (status) {
|
||||
if (status !== 'success') {
|
||||
console.log('FAIL to load the address');
|
||||
} else {
|
||||
t = Date.now() - t;
|
||||
console.log('Page title is ' + page.evaluate(function () {
|
||||
return document.title;
|
||||
}));
|
||||
console.log('Loading time ' + t + ' msec');
|
||||
}
|
||||
phantom.exit();
|
||||
});
|
||||
}
|
26
third_party/phantomjs/examples/loadurlwithoutcss.js
vendored
Normal file
26
third_party/phantomjs/examples/loadurlwithoutcss.js
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
"use strict";
|
||||
var page = require('webpage').create(),
|
||||
system = require('system');
|
||||
|
||||
if (system.args.length < 2) {
|
||||
console.log('Usage: loadurlwithoutcss.js URL');
|
||||
phantom.exit();
|
||||
}
|
||||
|
||||
var address = system.args[1];
|
||||
|
||||
page.onResourceRequested = function(requestData, request) {
|
||||
if ((/http:\/\/.+?\.css/gi).test(requestData['url']) || requestData.headers['Content-Type'] == 'text/css') {
|
||||
console.log('The url of the request is matching. Aborting: ' + requestData['url']);
|
||||
request.abort();
|
||||
}
|
||||
};
|
||||
|
||||
page.open(address, function(status) {
|
||||
if (status === 'success') {
|
||||
phantom.exit();
|
||||
} else {
|
||||
console.log('Unable to load the address!');
|
||||
phantom.exit();
|
||||
}
|
||||
});
|
1406
third_party/phantomjs/examples/modernizr.js
vendored
Normal file
1406
third_party/phantomjs/examples/modernizr.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
5
third_party/phantomjs/examples/module.js
vendored
Normal file
5
third_party/phantomjs/examples/module.js
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
"use strict";
|
||||
var universe = require('./universe');
|
||||
universe.start();
|
||||
console.log('The answer is ' + universe.answer);
|
||||
phantom.exit();
|
26
third_party/phantomjs/examples/netlog.js
vendored
Normal file
26
third_party/phantomjs/examples/netlog.js
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
"use strict";
|
||||
var page = require('webpage').create(),
|
||||
system = require('system'),
|
||||
address;
|
||||
|
||||
if (system.args.length === 1) {
|
||||
console.log('Usage: netlog.js <some URL>');
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
address = system.args[1];
|
||||
|
||||
page.onResourceRequested = function (req) {
|
||||
console.log('requested: ' + JSON.stringify(req, undefined, 4));
|
||||
};
|
||||
|
||||
page.onResourceReceived = function (res) {
|
||||
console.log('received: ' + JSON.stringify(res, undefined, 4));
|
||||
};
|
||||
|
||||
page.open(address, function (status) {
|
||||
if (status !== 'success') {
|
||||
console.log('FAIL to load the address');
|
||||
}
|
||||
phantom.exit();
|
||||
});
|
||||
}
|
144
third_party/phantomjs/examples/netsniff.js
vendored
Normal file
144
third_party/phantomjs/examples/netsniff.js
vendored
Normal file
@ -0,0 +1,144 @@
|
||||
"use strict";
|
||||
if (!Date.prototype.toISOString) {
|
||||
Date.prototype.toISOString = function () {
|
||||
function pad(n) { return n < 10 ? '0' + n : n; }
|
||||
function ms(n) { return n < 10 ? '00'+ n : n < 100 ? '0' + n : n }
|
||||
return this.getFullYear() + '-' +
|
||||
pad(this.getMonth() + 1) + '-' +
|
||||
pad(this.getDate()) + 'T' +
|
||||
pad(this.getHours()) + ':' +
|
||||
pad(this.getMinutes()) + ':' +
|
||||
pad(this.getSeconds()) + '.' +
|
||||
ms(this.getMilliseconds()) + 'Z';
|
||||
}
|
||||
}
|
||||
|
||||
function createHAR(address, title, startTime, resources)
|
||||
{
|
||||
var entries = [];
|
||||
|
||||
resources.forEach(function (resource) {
|
||||
var request = resource.request,
|
||||
startReply = resource.startReply,
|
||||
endReply = resource.endReply;
|
||||
|
||||
if (!request || !startReply || !endReply) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Exclude Data URI from HAR file because
|
||||
// they aren't included in specification
|
||||
if (request.url.match(/(^data:image\/.*)/i)) {
|
||||
return;
|
||||
}
|
||||
|
||||
entries.push({
|
||||
startedDateTime: request.time.toISOString(),
|
||||
time: endReply.time - request.time,
|
||||
request: {
|
||||
method: request.method,
|
||||
url: request.url,
|
||||
httpVersion: "HTTP/1.1",
|
||||
cookies: [],
|
||||
headers: request.headers,
|
||||
queryString: [],
|
||||
headersSize: -1,
|
||||
bodySize: -1
|
||||
},
|
||||
response: {
|
||||
status: endReply.status,
|
||||
statusText: endReply.statusText,
|
||||
httpVersion: "HTTP/1.1",
|
||||
cookies: [],
|
||||
headers: endReply.headers,
|
||||
redirectURL: "",
|
||||
headersSize: -1,
|
||||
bodySize: startReply.bodySize,
|
||||
content: {
|
||||
size: startReply.bodySize,
|
||||
mimeType: endReply.contentType
|
||||
}
|
||||
},
|
||||
cache: {},
|
||||
timings: {
|
||||
blocked: 0,
|
||||
dns: -1,
|
||||
connect: -1,
|
||||
send: 0,
|
||||
wait: startReply.time - request.time,
|
||||
receive: endReply.time - startReply.time,
|
||||
ssl: -1
|
||||
},
|
||||
pageref: address
|
||||
});
|
||||
});
|
||||
|
||||
return {
|
||||
log: {
|
||||
version: '1.2',
|
||||
creator: {
|
||||
name: "PhantomJS",
|
||||
version: phantom.version.major + '.' + phantom.version.minor +
|
||||
'.' + phantom.version.patch
|
||||
},
|
||||
pages: [{
|
||||
startedDateTime: startTime.toISOString(),
|
||||
id: address,
|
||||
title: title,
|
||||
pageTimings: {
|
||||
onLoad: page.endTime - page.startTime
|
||||
}
|
||||
}],
|
||||
entries: entries
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
var page = require('webpage').create(),
|
||||
system = require('system');
|
||||
|
||||
if (system.args.length === 1) {
|
||||
console.log('Usage: netsniff.js <some URL>');
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
|
||||
page.address = system.args[1];
|
||||
page.resources = [];
|
||||
|
||||
page.onLoadStarted = function () {
|
||||
page.startTime = new Date();
|
||||
};
|
||||
|
||||
page.onResourceRequested = function (req) {
|
||||
page.resources[req.id] = {
|
||||
request: req,
|
||||
startReply: null,
|
||||
endReply: null
|
||||
};
|
||||
};
|
||||
|
||||
page.onResourceReceived = function (res) {
|
||||
if (res.stage === 'start') {
|
||||
page.resources[res.id].startReply = res;
|
||||
}
|
||||
if (res.stage === 'end') {
|
||||
page.resources[res.id].endReply = res;
|
||||
}
|
||||
};
|
||||
|
||||
page.open(page.address, function (status) {
|
||||
var har;
|
||||
if (status !== 'success') {
|
||||
console.log('FAIL to load the address');
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
page.endTime = new Date();
|
||||
page.title = page.evaluate(function () {
|
||||
return document.title;
|
||||
});
|
||||
har = createHAR(page.address, page.title, page.startTime, page.resources);
|
||||
console.log(JSON.stringify(har, undefined, 4));
|
||||
phantom.exit();
|
||||
}
|
||||
});
|
||||
}
|
25
third_party/phantomjs/examples/openurlwithproxy.js
vendored
Normal file
25
third_party/phantomjs/examples/openurlwithproxy.js
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
"use strict";
|
||||
var page = require('webpage').create(),
|
||||
system = require('system'),
|
||||
host, port, address;
|
||||
|
||||
if (system.args.length < 4) {
|
||||
console.log('Usage: openurlwithproxy.js <proxyHost> <proxyPort> <URL>');
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
host = system.args[1];
|
||||
port = system.args[2];
|
||||
address = system.args[3];
|
||||
phantom.setProxy(host, port, 'manual', '', '');
|
||||
page.open(address, function (status) {
|
||||
if (status !== 'success') {
|
||||
console.log('FAIL to load the address "' +
|
||||
address + '" using proxy "' + host + ':' + port + '"');
|
||||
} else {
|
||||
console.log('Page title is ' + page.evaluate(function () {
|
||||
return document.title;
|
||||
}));
|
||||
}
|
||||
phantom.exit();
|
||||
});
|
||||
}
|
17
third_party/phantomjs/examples/outputEncoding.js
vendored
Normal file
17
third_party/phantomjs/examples/outputEncoding.js
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
"use strict";
|
||||
function helloWorld() {
|
||||
console.log(phantom.outputEncoding + ": こんにちは、世界!");
|
||||
}
|
||||
|
||||
console.log("Using default encoding...");
|
||||
helloWorld();
|
||||
|
||||
console.log("\nUsing other encodings...");
|
||||
|
||||
var encodings = ["euc-jp", "sjis", "utf8", "System"];
|
||||
for (var i = 0; i < encodings.length; i++) {
|
||||
phantom.outputEncoding = encodings[i];
|
||||
helloWorld();
|
||||
}
|
||||
|
||||
phantom.exit()
|
147
third_party/phantomjs/examples/page_events.js
vendored
Normal file
147
third_party/phantomjs/examples/page_events.js
vendored
Normal file
@ -0,0 +1,147 @@
|
||||
// The purpose of this is to show how and when events fire, considering 5 steps
|
||||
// happening as follows:
|
||||
//
|
||||
// 1. Load URL
|
||||
// 2. Load same URL, but adding an internal FRAGMENT to it
|
||||
// 3. Click on an internal Link, that points to another internal FRAGMENT
|
||||
// 4. Click on an external Link, that will send the page somewhere else
|
||||
// 5. Close page
|
||||
//
|
||||
// Take particular care when going through the output, to understand when
|
||||
// things happen (and in which order). Particularly, notice what DOESN'T
|
||||
// happen during step 3.
|
||||
//
|
||||
// If invoked with "-v" it will print out the Page Resources as they are
|
||||
// Requested and Received.
|
||||
//
|
||||
// NOTE.1: The "onConsoleMessage/onAlert/onPrompt/onConfirm" events are
|
||||
// registered but not used here. This is left for you to have fun with.
|
||||
// NOTE.2: This script is not here to teach you ANY JavaScript. It's aweful!
|
||||
// NOTE.3: Main audience for this are people new to PhantomJS.
|
||||
|
||||
"use strict";
|
||||
var sys = require("system"),
|
||||
page = require("webpage").create(),
|
||||
logResources = false,
|
||||
step1url = "http://en.wikipedia.org/wiki/DOM_events",
|
||||
step2url = "http://en.wikipedia.org/wiki/DOM_events#Event_flow";
|
||||
|
||||
if (sys.args.length > 1 && sys.args[1] === "-v") {
|
||||
logResources = true;
|
||||
}
|
||||
|
||||
function printArgs() {
|
||||
var i, ilen;
|
||||
for (i = 0, ilen = arguments.length; i < ilen; ++i) {
|
||||
console.log(" arguments[" + i + "] = " + JSON.stringify(arguments[i]));
|
||||
}
|
||||
console.log("");
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
page.onInitialized = function() {
|
||||
console.log("page.onInitialized");
|
||||
printArgs.apply(this, arguments);
|
||||
};
|
||||
page.onLoadStarted = function() {
|
||||
console.log("page.onLoadStarted");
|
||||
printArgs.apply(this, arguments);
|
||||
};
|
||||
page.onLoadFinished = function() {
|
||||
console.log("page.onLoadFinished");
|
||||
printArgs.apply(this, arguments);
|
||||
};
|
||||
page.onUrlChanged = function() {
|
||||
console.log("page.onUrlChanged");
|
||||
printArgs.apply(this, arguments);
|
||||
};
|
||||
page.onNavigationRequested = function() {
|
||||
console.log("page.onNavigationRequested");
|
||||
printArgs.apply(this, arguments);
|
||||
};
|
||||
page.onRepaintRequested = function() {
|
||||
console.log("page.onRepaintRequested");
|
||||
printArgs.apply(this, arguments);
|
||||
};
|
||||
|
||||
if (logResources === true) {
|
||||
page.onResourceRequested = function() {
|
||||
console.log("page.onResourceRequested");
|
||||
printArgs.apply(this, arguments);
|
||||
};
|
||||
page.onResourceReceived = function() {
|
||||
console.log("page.onResourceReceived");
|
||||
printArgs.apply(this, arguments);
|
||||
};
|
||||
}
|
||||
|
||||
page.onClosing = function() {
|
||||
console.log("page.onClosing");
|
||||
printArgs.apply(this, arguments);
|
||||
};
|
||||
|
||||
// window.console.log(msg);
|
||||
page.onConsoleMessage = function() {
|
||||
console.log("page.onConsoleMessage");
|
||||
printArgs.apply(this, arguments);
|
||||
};
|
||||
|
||||
// window.alert(msg);
|
||||
page.onAlert = function() {
|
||||
console.log("page.onAlert");
|
||||
printArgs.apply(this, arguments);
|
||||
};
|
||||
// var confirmed = window.confirm(msg);
|
||||
page.onConfirm = function() {
|
||||
console.log("page.onConfirm");
|
||||
printArgs.apply(this, arguments);
|
||||
};
|
||||
// var user_value = window.prompt(msg, default_value);
|
||||
page.onPrompt = function() {
|
||||
console.log("page.onPrompt");
|
||||
printArgs.apply(this, arguments);
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
setTimeout(function() {
|
||||
console.log("");
|
||||
console.log("### STEP 1: Load '" + step1url + "'");
|
||||
page.open(step1url);
|
||||
}, 0);
|
||||
|
||||
setTimeout(function() {
|
||||
console.log("");
|
||||
console.log("### STEP 2: Load '" + step2url + "' (load same URL plus FRAGMENT)");
|
||||
page.open(step2url);
|
||||
}, 5000);
|
||||
|
||||
setTimeout(function() {
|
||||
console.log("");
|
||||
console.log("### STEP 3: Click on page internal link (aka FRAGMENT)");
|
||||
page.evaluate(function() {
|
||||
var ev = document.createEvent("MouseEvents");
|
||||
ev.initEvent("click", true, true);
|
||||
document.querySelector("a[href='#Event_object']").dispatchEvent(ev);
|
||||
});
|
||||
}, 10000);
|
||||
|
||||
setTimeout(function() {
|
||||
console.log("");
|
||||
console.log("### STEP 4: Click on page external link");
|
||||
page.evaluate(function() {
|
||||
var ev = document.createEvent("MouseEvents");
|
||||
ev.initEvent("click", true, true);
|
||||
document.querySelector("a[title='JavaScript']").dispatchEvent(ev);
|
||||
});
|
||||
}, 15000);
|
||||
|
||||
setTimeout(function() {
|
||||
console.log("");
|
||||
console.log("### STEP 5: Close page and shutdown (with a delay)");
|
||||
page.close();
|
||||
setTimeout(function(){
|
||||
phantom.exit();
|
||||
}, 100);
|
||||
}, 20000);
|
18
third_party/phantomjs/examples/pagecallback.js
vendored
Normal file
18
third_party/phantomjs/examples/pagecallback.js
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
"use strict";
|
||||
var p = require("webpage").create();
|
||||
|
||||
p.onConsoleMessage = function(msg) { console.log(msg); };
|
||||
|
||||
// Calls to "callPhantom" within the page 'p' arrive here
|
||||
p.onCallback = function(msg) {
|
||||
console.log("Received by the 'phantom' main context: "+msg);
|
||||
return "Hello there, I'm coming to you from the 'phantom' context instead";
|
||||
};
|
||||
|
||||
p.evaluate(function() {
|
||||
// Return-value of the "onCallback" handler arrive here
|
||||
var callbackResponse = window.callPhantom("Hello, I'm coming to you from the 'page' context");
|
||||
console.log("Received by the 'page' context: "+callbackResponse);
|
||||
});
|
||||
|
||||
phantom.exit();
|
21
third_party/phantomjs/examples/phantomwebintro.js
vendored
Normal file
21
third_party/phantomjs/examples/phantomwebintro.js
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
// Read the Phantom webpage '#intro' element text using jQuery and "includeJs"
|
||||
|
||||
"use strict";
|
||||
var page = require('webpage').create();
|
||||
|
||||
page.onConsoleMessage = function(msg) {
|
||||
console.log(msg);
|
||||
};
|
||||
|
||||
page.open("http://phantomjs.org/", function(status) {
|
||||
if (status === "success") {
|
||||
page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {
|
||||
page.evaluate(function() {
|
||||
console.log("$(\".explanation\").text() -> " + $(".explanation").text());
|
||||
});
|
||||
phantom.exit(0);
|
||||
});
|
||||
} else {
|
||||
phantom.exit(1);
|
||||
}
|
||||
});
|
15
third_party/phantomjs/examples/post.js
vendored
Normal file
15
third_party/phantomjs/examples/post.js
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
// Example using HTTP POST operation
|
||||
|
||||
"use strict";
|
||||
var page = require('webpage').create(),
|
||||
server = 'http://posttestserver.com/post.php?dump',
|
||||
data = 'universe=expanding&answer=42';
|
||||
|
||||
page.open(server, 'post', data, function (status) {
|
||||
if (status !== 'success') {
|
||||
console.log('Unable to post!');
|
||||
} else {
|
||||
console.log(page.content);
|
||||
}
|
||||
phantom.exit();
|
||||
});
|
19
third_party/phantomjs/examples/postjson.js
vendored
Normal file
19
third_party/phantomjs/examples/postjson.js
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
// Example using HTTP POST operation
|
||||
|
||||
"use strict";
|
||||
var page = require('webpage').create(),
|
||||
server = 'http://posttestserver.com/post.php?dump',
|
||||
data = '{"universe": "expanding", "answer": 42}';
|
||||
|
||||
var headers = {
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
|
||||
page.open(server, 'post', data, headers, function (status) {
|
||||
if (status !== 'success') {
|
||||
console.log('Unable to post!');
|
||||
} else {
|
||||
console.log(page.content);
|
||||
}
|
||||
phantom.exit();
|
||||
});
|
35
third_party/phantomjs/examples/postserver.js
vendored
Normal file
35
third_party/phantomjs/examples/postserver.js
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
// Example using HTTP POST operation
|
||||
|
||||
"use strict";
|
||||
var page = require('webpage').create(),
|
||||
server = require('webserver').create(),
|
||||
system = require('system'),
|
||||
data = 'universe=expanding&answer=42';
|
||||
|
||||
if (system.args.length !== 2) {
|
||||
console.log('Usage: postserver.js <portnumber>');
|
||||
phantom.exit(1);
|
||||
}
|
||||
|
||||
var port = system.args[1];
|
||||
|
||||
service = server.listen(port, function (request, response) {
|
||||
console.log('Request received at ' + new Date());
|
||||
|
||||
response.statusCode = 200;
|
||||
response.headers = {
|
||||
'Cache': 'no-cache',
|
||||
'Content-Type': 'text/plain;charset=utf-8'
|
||||
};
|
||||
response.write(JSON.stringify(request, null, 4));
|
||||
response.close();
|
||||
});
|
||||
|
||||
page.open('http://localhost:' + port + '/', 'post', data, function (status) {
|
||||
if (status !== 'success') {
|
||||
console.log('Unable to post!');
|
||||
} else {
|
||||
console.log(page.plainText);
|
||||
}
|
||||
phantom.exit();
|
||||
});
|
10
third_party/phantomjs/examples/printenv.js
vendored
Normal file
10
third_party/phantomjs/examples/printenv.js
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
var system = require('system'),
|
||||
env = system.env,
|
||||
key;
|
||||
|
||||
for (key in env) {
|
||||
if (env.hasOwnProperty(key)) {
|
||||
console.log(key + '=' + env[key]);
|
||||
}
|
||||
}
|
||||
phantom.exit();
|
90
third_party/phantomjs/examples/printheaderfooter.js
vendored
Normal file
90
third_party/phantomjs/examples/printheaderfooter.js
vendored
Normal file
@ -0,0 +1,90 @@
|
||||
"use strict";
|
||||
var page = require('webpage').create(),
|
||||
system = require('system');
|
||||
|
||||
function someCallback(pageNum, numPages) {
|
||||
return "<h1> someCallback: " + pageNum + " / " + numPages + "</h1>";
|
||||
}
|
||||
|
||||
if (system.args.length < 3) {
|
||||
console.log('Usage: printheaderfooter.js URL filename');
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
var address = system.args[1];
|
||||
var output = system.args[2];
|
||||
page.viewportSize = { width: 600, height: 600 };
|
||||
page.paperSize = {
|
||||
format: 'A4',
|
||||
margin: "1cm",
|
||||
/* default header/footer for pages that don't have custom overwrites (see below) */
|
||||
header: {
|
||||
height: "1cm",
|
||||
contents: phantom.callback(function(pageNum, numPages) {
|
||||
if (pageNum == 1) {
|
||||
return "";
|
||||
}
|
||||
return "<h1>Header <span style='float:right'>" + pageNum + " / " + numPages + "</span></h1>";
|
||||
})
|
||||
},
|
||||
footer: {
|
||||
height: "1cm",
|
||||
contents: phantom.callback(function(pageNum, numPages) {
|
||||
if (pageNum == numPages) {
|
||||
return "";
|
||||
}
|
||||
return "<h1>Footer <span style='float:right'>" + pageNum + " / " + numPages + "</span></h1>";
|
||||
})
|
||||
}
|
||||
};
|
||||
page.open(address, function (status) {
|
||||
if (status !== 'success') {
|
||||
console.log('Unable to load the address!');
|
||||
} else {
|
||||
/* check whether the loaded page overwrites the header/footer setting,
|
||||
i.e. whether a PhantomJSPriting object exists. Use that then instead
|
||||
of our defaults above.
|
||||
|
||||
example:
|
||||
<html>
|
||||
<head>
|
||||
<script type="text/javascript">
|
||||
var PhantomJSPrinting = {
|
||||
header: {
|
||||
height: "1cm",
|
||||
contents: function(pageNum, numPages) { return pageNum + "/" + numPages; }
|
||||
},
|
||||
footer: {
|
||||
height: "1cm",
|
||||
contents: function(pageNum, numPages) { return pageNum + "/" + numPages; }
|
||||
}
|
||||
};
|
||||
</script>
|
||||
</head>
|
||||
<body><h1>asdfadsf</h1><p>asdfadsfycvx</p></body>
|
||||
</html>
|
||||
*/
|
||||
if (page.evaluate(function(){return typeof PhantomJSPrinting == "object";})) {
|
||||
paperSize = page.paperSize;
|
||||
paperSize.header.height = page.evaluate(function() {
|
||||
return PhantomJSPrinting.header.height;
|
||||
});
|
||||
paperSize.header.contents = phantom.callback(function(pageNum, numPages) {
|
||||
return page.evaluate(function(pageNum, numPages){return PhantomJSPrinting.header.contents(pageNum, numPages);}, pageNum, numPages);
|
||||
});
|
||||
paperSize.footer.height = page.evaluate(function() {
|
||||
return PhantomJSPrinting.footer.height;
|
||||
});
|
||||
paperSize.footer.contents = phantom.callback(function(pageNum, numPages) {
|
||||
return page.evaluate(function(pageNum, numPages){return PhantomJSPrinting.footer.contents(pageNum, numPages);}, pageNum, numPages);
|
||||
});
|
||||
page.paperSize = paperSize;
|
||||
console.log(page.paperSize.header.height);
|
||||
console.log(page.paperSize.footer.height);
|
||||
}
|
||||
window.setTimeout(function () {
|
||||
page.render(output);
|
||||
phantom.exit();
|
||||
}, 200);
|
||||
}
|
||||
});
|
||||
}
|
36
third_party/phantomjs/examples/printmargins.js
vendored
Normal file
36
third_party/phantomjs/examples/printmargins.js
vendored
Normal file
@ -0,0 +1,36 @@
|
||||
"use strict";
|
||||
var page = require('webpage').create(),
|
||||
system = require('system');
|
||||
|
||||
if (system.args.length < 7) {
|
||||
console.log('Usage: printmargins.js URL filename LEFT TOP RIGHT BOTTOM');
|
||||
console.log(' margin examples: "1cm", "10px", "7mm", "5in"');
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
var address = system.args[1];
|
||||
var output = system.args[2];
|
||||
var marginLeft = system.args[3];
|
||||
var marginTop = system.args[4];
|
||||
var marginRight = system.args[5];
|
||||
var marginBottom = system.args[6];
|
||||
page.viewportSize = { width: 600, height: 600 };
|
||||
page.paperSize = {
|
||||
format: 'A4',
|
||||
margin: {
|
||||
left: marginLeft,
|
||||
top: marginTop,
|
||||
right: marginRight,
|
||||
bottom: marginBottom
|
||||
}
|
||||
};
|
||||
page.open(address, function (status) {
|
||||
if (status !== 'success') {
|
||||
console.log('Unable to load the address!');
|
||||
} else {
|
||||
window.setTimeout(function () {
|
||||
page.render(output);
|
||||
phantom.exit();
|
||||
}, 200);
|
||||
}
|
||||
});
|
||||
}
|
49
third_party/phantomjs/examples/rasterize.js
vendored
Normal file
49
third_party/phantomjs/examples/rasterize.js
vendored
Normal file
@ -0,0 +1,49 @@
|
||||
"use strict";
|
||||
var page = require('webpage').create(),
|
||||
system = require('system'),
|
||||
address, output, size;
|
||||
|
||||
if (system.args.length < 3 || system.args.length > 5) {
|
||||
console.log('Usage: rasterize.js URL filename [paperwidth*paperheight|paperformat] [zoom]');
|
||||
console.log(' paper (pdf output) examples: "5in*7.5in", "10cm*20cm", "A4", "Letter"');
|
||||
console.log(' image (png/jpg output) examples: "1920px" entire page, window width 1920px');
|
||||
console.log(' "800px*600px" window, clipped to 800x600');
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
address = system.args[1];
|
||||
output = system.args[2];
|
||||
page.viewportSize = { width: 600, height: 600 };
|
||||
if (system.args.length > 3 && system.args[2].substr(-4) === ".pdf") {
|
||||
size = system.args[3].split('*');
|
||||
page.paperSize = size.length === 2 ? { width: size[0], height: size[1], margin: '0px' }
|
||||
: { format: system.args[3], orientation: 'portrait', margin: '1cm' };
|
||||
} else if (system.args.length > 3 && system.args[3].substr(-2) === "px") {
|
||||
size = system.args[3].split('*');
|
||||
if (size.length === 2) {
|
||||
pageWidth = parseInt(size[0], 10);
|
||||
pageHeight = parseInt(size[1], 10);
|
||||
page.viewportSize = { width: pageWidth, height: pageHeight };
|
||||
page.clipRect = { top: 0, left: 0, width: pageWidth, height: pageHeight };
|
||||
} else {
|
||||
console.log("size:", system.args[3]);
|
||||
pageWidth = parseInt(system.args[3], 10);
|
||||
pageHeight = parseInt(pageWidth * 3/4, 10); // it's as good an assumption as any
|
||||
console.log ("pageHeight:",pageHeight);
|
||||
page.viewportSize = { width: pageWidth, height: pageHeight };
|
||||
}
|
||||
}
|
||||
if (system.args.length > 4) {
|
||||
page.zoomFactor = system.args[4];
|
||||
}
|
||||
page.open(address, function (status) {
|
||||
if (status !== 'success') {
|
||||
console.log('Unable to load the address!');
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
window.setTimeout(function () {
|
||||
page.render(output);
|
||||
phantom.exit();
|
||||
}, 200);
|
||||
}
|
||||
});
|
||||
}
|
74
third_party/phantomjs/examples/render_multi_url.js
vendored
Normal file
74
third_party/phantomjs/examples/render_multi_url.js
vendored
Normal file
@ -0,0 +1,74 @@
|
||||
// Render Multiple URLs to file
|
||||
|
||||
"use strict";
|
||||
var RenderUrlsToFile, arrayOfUrls, system;
|
||||
|
||||
system = require("system");
|
||||
|
||||
/*
|
||||
Render given urls
|
||||
@param array of URLs to render
|
||||
@param callbackPerUrl Function called after finishing each URL, including the last URL
|
||||
@param callbackFinal Function called after finishing everything
|
||||
*/
|
||||
RenderUrlsToFile = function(urls, callbackPerUrl, callbackFinal) {
|
||||
var getFilename, next, page, retrieve, urlIndex, webpage;
|
||||
urlIndex = 0;
|
||||
webpage = require("webpage");
|
||||
page = null;
|
||||
getFilename = function() {
|
||||
return "rendermulti-" + urlIndex + ".png";
|
||||
};
|
||||
next = function(status, url, file) {
|
||||
page.close();
|
||||
callbackPerUrl(status, url, file);
|
||||
return retrieve();
|
||||
};
|
||||
retrieve = function() {
|
||||
var url;
|
||||
if (urls.length > 0) {
|
||||
url = urls.shift();
|
||||
urlIndex++;
|
||||
page = webpage.create();
|
||||
page.viewportSize = {
|
||||
width: 800,
|
||||
height: 600
|
||||
};
|
||||
page.settings.userAgent = "Phantom.js bot";
|
||||
return page.open("http://" + url, function(status) {
|
||||
var file;
|
||||
file = getFilename();
|
||||
if (status === "success") {
|
||||
return window.setTimeout((function() {
|
||||
page.render(file);
|
||||
return next(status, url, file);
|
||||
}), 200);
|
||||
} else {
|
||||
return next(status, url, file);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
return callbackFinal();
|
||||
}
|
||||
};
|
||||
return retrieve();
|
||||
};
|
||||
|
||||
arrayOfUrls = null;
|
||||
|
||||
if (system.args.length > 1) {
|
||||
arrayOfUrls = Array.prototype.slice.call(system.args, 1);
|
||||
} else {
|
||||
console.log("Usage: phantomjs render_multi_url.js [domain.name1, domain.name2, ...]");
|
||||
arrayOfUrls = ["www.google.com", "www.bbc.co.uk", "phantomjs.org"];
|
||||
}
|
||||
|
||||
RenderUrlsToFile(arrayOfUrls, (function(status, url, file) {
|
||||
if (status !== "success") {
|
||||
return console.log("Unable to render '" + url + "'");
|
||||
} else {
|
||||
return console.log("Rendered '" + url + "' at '" + file + "'");
|
||||
}
|
||||
}), function() {
|
||||
return phantom.exit();
|
||||
});
|
181
third_party/phantomjs/examples/responsive-screenshot.js
vendored
Normal file
181
third_party/phantomjs/examples/responsive-screenshot.js
vendored
Normal file
@ -0,0 +1,181 @@
|
||||
/**
|
||||
* Captures the full height document even if it's not showing on the screen or captures with the provided range of screen sizes.
|
||||
*
|
||||
* A basic example for taking a screen shot using phantomjs which is sampled for https://nodejs-dersleri.github.io/
|
||||
*
|
||||
* usage : phantomjs responsive-screenshot.js {url} [output format] [doClipping]
|
||||
*
|
||||
* examples >
|
||||
* phantomjs responsive-screenshot.js https://nodejs-dersleri.github.io/
|
||||
* phantomjs responsive-screenshot.js https://nodejs-dersleri.github.io/ pdf
|
||||
* phantomjs responsive-screenshot.js https://nodejs-dersleri.github.io/ true
|
||||
* phantomjs responsive-screenshot.js https://nodejs-dersleri.github.io/ png true
|
||||
*
|
||||
* @author Salih sagdilek <salihsagdilek@gmail.com>
|
||||
*/
|
||||
|
||||
/**
|
||||
* http://phantomjs.org/api/system/property/args.html
|
||||
*
|
||||
* Queries and returns a list of the command-line arguments.
|
||||
* The first one is always the script name, which is then followed by the subsequent arguments.
|
||||
*/
|
||||
var args = require('system').args;
|
||||
/**
|
||||
* http://phantomjs.org/api/fs/
|
||||
*
|
||||
* file system api
|
||||
*/
|
||||
var fs = require('fs');
|
||||
|
||||
/**
|
||||
* http://phantomjs.org/api/webpage/
|
||||
*
|
||||
* Web page api
|
||||
*/
|
||||
var page = new WebPage();
|
||||
|
||||
/**
|
||||
* if url address does not exist, exit phantom
|
||||
*/
|
||||
if ( 1 === args.length ) {
|
||||
console.log('Url address is required');
|
||||
phantom.exit();
|
||||
}
|
||||
|
||||
/**
|
||||
* setup url address (second argument);
|
||||
*/
|
||||
var urlAddress = args[1].toLowerCase();
|
||||
|
||||
|
||||
/**
|
||||
* set output extension format
|
||||
* @type {*}
|
||||
*/
|
||||
var ext = getFileExtension();
|
||||
|
||||
/**
|
||||
* set if clipping ?
|
||||
* @type {boolean}
|
||||
*/
|
||||
var clipping = getClipping();
|
||||
|
||||
/**
|
||||
* setup viewports
|
||||
*/
|
||||
var viewports = [
|
||||
{
|
||||
width : 1200,
|
||||
height : 800
|
||||
},
|
||||
{
|
||||
width : 1024,
|
||||
height : 768
|
||||
},
|
||||
{
|
||||
width : 768,
|
||||
height : 1024
|
||||
},
|
||||
{
|
||||
width : 480,
|
||||
height : 640
|
||||
},
|
||||
{
|
||||
width : 320,
|
||||
height : 480
|
||||
}
|
||||
];
|
||||
|
||||
page.open(urlAddress, function (status) {
|
||||
if ( 'success' !== status ) {
|
||||
console.log('Unable to load the url address!');
|
||||
} else {
|
||||
var folder = urlToDir(urlAddress);
|
||||
var output, key;
|
||||
|
||||
function render(n) {
|
||||
if ( !!n ) {
|
||||
key = n - 1;
|
||||
page.viewportSize = viewports[key];
|
||||
if ( clipping ) {
|
||||
page.clipRect = viewports[key];
|
||||
}
|
||||
output = folder + "/" + getFileName(viewports[key]);
|
||||
console.log('Saving ' + output);
|
||||
page.render(output);
|
||||
render(key);
|
||||
}
|
||||
}
|
||||
|
||||
render(viewports.length);
|
||||
}
|
||||
phantom.exit();
|
||||
});
|
||||
|
||||
/**
|
||||
* filename generator helper
|
||||
* @param viewport
|
||||
* @returns {string}
|
||||
*/
|
||||
function getFileName(viewport) {
|
||||
var d = new Date();
|
||||
var date = [
|
||||
d.getUTCFullYear(),
|
||||
d.getUTCMonth() + 1,
|
||||
d.getUTCDate()
|
||||
];
|
||||
var time = [
|
||||
d.getHours() <= 9 ? '0' + d.getHours() : d.getHours(),
|
||||
d.getMinutes() <= 9 ? '0' + d.getMinutes() : d.getMinutes(),
|
||||
d.getSeconds() <= 9 ? '0' + d.getSeconds() : d.getSeconds(),
|
||||
d.getMilliseconds()
|
||||
];
|
||||
var resolution = viewport.width + (clipping ? "x" + viewport.height : '');
|
||||
|
||||
return date.join('-') + '_' + time.join('-') + "_" + resolution + ext;
|
||||
}
|
||||
|
||||
/**
|
||||
* output extension format helper
|
||||
*
|
||||
* @returns {*}
|
||||
*/
|
||||
function getFileExtension() {
|
||||
if ( 'true' != args[2] && !!args[2] ) {
|
||||
return '.' + args[2];
|
||||
}
|
||||
return '.png';
|
||||
}
|
||||
|
||||
/**
|
||||
* check if clipping
|
||||
*
|
||||
* @returns {boolean}
|
||||
*/
|
||||
function getClipping() {
|
||||
if ( 'true' == args[3] ) {
|
||||
return !!args[3];
|
||||
} else if ( 'true' == args[2] ) {
|
||||
return !!args[2];
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* url to directory helper
|
||||
*
|
||||
* @param url
|
||||
* @returns {string}
|
||||
*/
|
||||
function urlToDir(url) {
|
||||
var dir = url
|
||||
.replace(/^(http|https):\/\//, '')
|
||||
.replace(/\/$/, '');
|
||||
|
||||
if ( !fs.makeTree(dir) ) {
|
||||
console.log('"' + dir + '" is NOT created.');
|
||||
phantom.exit();
|
||||
}
|
||||
return dir;
|
||||
}
|
92
third_party/phantomjs/examples/run-jasmine.js
vendored
Normal file
92
third_party/phantomjs/examples/run-jasmine.js
vendored
Normal file
@ -0,0 +1,92 @@
|
||||
"use strict";
|
||||
var system = require('system');
|
||||
|
||||
/**
|
||||
* Wait until the test condition is true or a timeout occurs. Useful for waiting
|
||||
* on a server response or for a ui change (fadeIn, etc.) to occur.
|
||||
*
|
||||
* @param testFx javascript condition that evaluates to a boolean,
|
||||
* it can be passed in as a string (e.g.: "1 == 1" or "$('#bar').is(':visible')" or
|
||||
* as a callback function.
|
||||
* @param onReady what to do when testFx condition is fulfilled,
|
||||
* it can be passed in as a string (e.g.: "1 == 1" or "$('#bar').is(':visible')" or
|
||||
* as a callback function.
|
||||
* @param timeOutMillis the max amount of time to wait. If not specified, 3 sec is used.
|
||||
*/
|
||||
function waitFor(testFx, onReady, timeOutMillis) {
|
||||
var maxtimeOutMillis = timeOutMillis ? timeOutMillis : 3001, //< Default Max Timeout is 3s
|
||||
start = new Date().getTime(),
|
||||
condition = false,
|
||||
interval = setInterval(function() {
|
||||
if ( (new Date().getTime() - start < maxtimeOutMillis) && !condition ) {
|
||||
// If not time-out yet and condition not yet fulfilled
|
||||
condition = (typeof(testFx) === "string" ? eval(testFx) : testFx()); //< defensive code
|
||||
} else {
|
||||
if(!condition) {
|
||||
// If condition still not fulfilled (timeout but condition is 'false')
|
||||
console.log("'waitFor()' timeout");
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
// Condition fulfilled (timeout and/or condition is 'true')
|
||||
console.log("'waitFor()' finished in " + (new Date().getTime() - start) + "ms.");
|
||||
typeof(onReady) === "string" ? eval(onReady) : onReady(); //< Do what it's supposed to do once the condition is fulfilled
|
||||
clearInterval(interval); //< Stop this interval
|
||||
}
|
||||
}
|
||||
}, 100); //< repeat check every 100ms
|
||||
};
|
||||
|
||||
|
||||
if (system.args.length !== 2) {
|
||||
console.log('Usage: run-jasmine.js URL');
|
||||
phantom.exit(1);
|
||||
}
|
||||
|
||||
var page = require('webpage').create();
|
||||
|
||||
// Route "console.log()" calls from within the Page context to the main Phantom context (i.e. current "this")
|
||||
page.onConsoleMessage = function(msg) {
|
||||
console.log(msg);
|
||||
};
|
||||
|
||||
page.open(system.args[1], function(status){
|
||||
if (status !== "success") {
|
||||
console.log("Unable to open " + system.args[1]);
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
waitFor(function(){
|
||||
return page.evaluate(function(){
|
||||
return document.body.querySelector('.symbolSummary .pending') === null
|
||||
});
|
||||
}, function(){
|
||||
var exitCode = page.evaluate(function(){
|
||||
try {
|
||||
console.log('');
|
||||
console.log(document.body.querySelector('.description').innerText);
|
||||
var list = document.body.querySelectorAll('.results > #details > .specDetail.failed');
|
||||
if (list && list.length > 0) {
|
||||
console.log('');
|
||||
console.log(list.length + ' test(s) FAILED:');
|
||||
for (i = 0; i < list.length; ++i) {
|
||||
var el = list[i],
|
||||
desc = el.querySelector('.description'),
|
||||
msg = el.querySelector('.resultMessage.fail');
|
||||
console.log('');
|
||||
console.log(desc.innerText);
|
||||
console.log(msg.innerText);
|
||||
console.log('');
|
||||
}
|
||||
return 1;
|
||||
} else {
|
||||
console.log(document.body.querySelector('.alert > .passingAlert.bar').innerText);
|
||||
return 0;
|
||||
}
|
||||
} catch (ex) {
|
||||
console.log(ex);
|
||||
return 1;
|
||||
}
|
||||
});
|
||||
phantom.exit(exitCode);
|
||||
});
|
||||
}
|
||||
});
|
94
third_party/phantomjs/examples/run-jasmine2.js
vendored
Normal file
94
third_party/phantomjs/examples/run-jasmine2.js
vendored
Normal file
@ -0,0 +1,94 @@
|
||||
"use strict";
|
||||
var system = require('system');
|
||||
|
||||
/**
|
||||
* Wait until the test condition is true or a timeout occurs. Useful for waiting
|
||||
* on a server response or for a ui change (fadeIn, etc.) to occur.
|
||||
*
|
||||
* @param testFx javascript condition that evaluates to a boolean,
|
||||
* it can be passed in as a string (e.g.: "1 == 1" or "$('#bar').is(':visible')" or
|
||||
* as a callback function.
|
||||
* @param onReady what to do when testFx condition is fulfilled,
|
||||
* it can be passed in as a string (e.g.: "1 == 1" or "$('#bar').is(':visible')" or
|
||||
* as a callback function.
|
||||
* @param timeOutMillis the max amount of time to wait. If not specified, 3 sec is used.
|
||||
*/
|
||||
function waitFor(testFx, onReady, timeOutMillis) {
|
||||
var maxtimeOutMillis = timeOutMillis ? timeOutMillis : 3001, //< Default Max Timeout is 3s
|
||||
start = new Date().getTime(),
|
||||
condition = false,
|
||||
interval = setInterval(function() {
|
||||
if ( (new Date().getTime() - start < maxtimeOutMillis) && !condition ) {
|
||||
// If not time-out yet and condition not yet fulfilled
|
||||
condition = (typeof(testFx) === "string" ? eval(testFx) : testFx()); //< defensive code
|
||||
} else {
|
||||
if(!condition) {
|
||||
// If condition still not fulfilled (timeout but condition is 'false')
|
||||
console.log("'waitFor()' timeout");
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
// Condition fulfilled (timeout and/or condition is 'true')
|
||||
console.log("'waitFor()' finished in " + (new Date().getTime() - start) + "ms.");
|
||||
typeof(onReady) === "string" ? eval(onReady) : onReady(); //< Do what it's supposed to do once the condition is fulfilled
|
||||
clearInterval(interval); //< Stop this interval
|
||||
}
|
||||
}
|
||||
}, 100); //< repeat check every 100ms
|
||||
};
|
||||
|
||||
|
||||
if (system.args.length !== 2) {
|
||||
console.log('Usage: run-jasmine2.js URL');
|
||||
phantom.exit(1);
|
||||
}
|
||||
|
||||
var page = require('webpage').create();
|
||||
|
||||
// Route "console.log()" calls from within the Page context to the main Phantom context (i.e. current "this")
|
||||
page.onConsoleMessage = function(msg) {
|
||||
console.log(msg);
|
||||
};
|
||||
|
||||
page.open(system.args[1], function(status){
|
||||
if (status !== "success") {
|
||||
console.log("Unable to access network");
|
||||
phantom.exit();
|
||||
} else {
|
||||
waitFor(function(){
|
||||
return page.evaluate(function(){
|
||||
return (document.body.querySelector('.symbolSummary .pending') === null &&
|
||||
document.body.querySelector('.duration') !== null);
|
||||
});
|
||||
}, function(){
|
||||
var exitCode = page.evaluate(function(){
|
||||
console.log('');
|
||||
|
||||
var title = 'Jasmine';
|
||||
var version = document.body.querySelector('.version').innerText;
|
||||
var duration = document.body.querySelector('.duration').innerText;
|
||||
var banner = title + ' ' + version + ' ' + duration;
|
||||
console.log(banner);
|
||||
|
||||
var list = document.body.querySelectorAll('.results > .failures > .spec-detail.failed');
|
||||
if (list && list.length > 0) {
|
||||
console.log('');
|
||||
console.log(list.length + ' test(s) FAILED:');
|
||||
for (i = 0; i < list.length; ++i) {
|
||||
var el = list[i],
|
||||
desc = el.querySelector('.description'),
|
||||
msg = el.querySelector('.messages > .result-message');
|
||||
console.log('');
|
||||
console.log(desc.innerText);
|
||||
console.log(msg.innerText);
|
||||
console.log('');
|
||||
}
|
||||
return 1;
|
||||
} else {
|
||||
console.log(document.body.querySelector('.alert > .bar.passed,.alert > .bar.skipped').innerText);
|
||||
return 0;
|
||||
}
|
||||
});
|
||||
phantom.exit(exitCode);
|
||||
});
|
||||
}
|
||||
});
|
77
third_party/phantomjs/examples/run-qunit.js
vendored
Normal file
77
third_party/phantomjs/examples/run-qunit.js
vendored
Normal file
@ -0,0 +1,77 @@
|
||||
"use strict";
|
||||
var system = require('system');
|
||||
|
||||
/**
|
||||
* Wait until the test condition is true or a timeout occurs. Useful for waiting
|
||||
* on a server response or for a ui change (fadeIn, etc.) to occur.
|
||||
*
|
||||
* @param testFx javascript condition that evaluates to a boolean,
|
||||
* it can be passed in as a string (e.g.: "1 == 1" or "$('#bar').is(':visible')" or
|
||||
* as a callback function.
|
||||
* @param onReady what to do when testFx condition is fulfilled,
|
||||
* it can be passed in as a string (e.g.: "1 == 1" or "$('#bar').is(':visible')" or
|
||||
* as a callback function.
|
||||
* @param timeOutMillis the max amount of time to wait. If not specified, 3 sec is used.
|
||||
*/
|
||||
function waitFor(testFx, onReady, timeOutMillis) {
|
||||
var maxtimeOutMillis = timeOutMillis ? timeOutMillis : 3001, //< Default Max Timout is 3s
|
||||
start = new Date().getTime(),
|
||||
condition = false,
|
||||
interval = setInterval(function() {
|
||||
if ( (new Date().getTime() - start < maxtimeOutMillis) && !condition ) {
|
||||
// If not time-out yet and condition not yet fulfilled
|
||||
condition = (typeof(testFx) === "string" ? eval(testFx) : testFx()); //< defensive code
|
||||
} else {
|
||||
if(!condition) {
|
||||
// If condition still not fulfilled (timeout but condition is 'false')
|
||||
console.log("'waitFor()' timeout");
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
// Condition fulfilled (timeout and/or condition is 'true')
|
||||
console.log("'waitFor()' finished in " + (new Date().getTime() - start) + "ms.");
|
||||
typeof(onReady) === "string" ? eval(onReady) : onReady(); //< Do what it's supposed to do once the condition is fulfilled
|
||||
clearInterval(interval); //< Stop this interval
|
||||
}
|
||||
}
|
||||
}, 100); //< repeat check every 250ms
|
||||
};
|
||||
|
||||
|
||||
if (system.args.length !== 2) {
|
||||
console.log('Usage: run-qunit.js URL');
|
||||
phantom.exit(1);
|
||||
}
|
||||
|
||||
var page = require('webpage').create();
|
||||
|
||||
// Route "console.log()" calls from within the Page context to the main Phantom context (i.e. current "this")
|
||||
page.onConsoleMessage = function(msg) {
|
||||
console.log(msg);
|
||||
};
|
||||
|
||||
page.open(system.args[1], function(status){
|
||||
if (status !== "success") {
|
||||
console.log("Unable to access network");
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
waitFor(function(){
|
||||
return page.evaluate(function(){
|
||||
var el = document.getElementById('qunit-testresult');
|
||||
if (el && el.innerText.match('completed')) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}, function(){
|
||||
var failedNum = page.evaluate(function(){
|
||||
var el = document.getElementById('qunit-testresult');
|
||||
console.log(el.innerText);
|
||||
try {
|
||||
return el.getElementsByClassName('failed')[0].innerHTML;
|
||||
} catch (e) { }
|
||||
return 10000;
|
||||
});
|
||||
phantom.exit((parseInt(failedNum, 10) > 0) ? 1 : 0);
|
||||
});
|
||||
}
|
||||
});
|
24
third_party/phantomjs/examples/scandir.js
vendored
Normal file
24
third_party/phantomjs/examples/scandir.js
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
// List all the files in a Tree of Directories
|
||||
|
||||
"use strict";
|
||||
var system = require('system');
|
||||
|
||||
if (system.args.length !== 2) {
|
||||
console.log("Usage: phantomjs scandir.js DIRECTORY_TO_SCAN");
|
||||
phantom.exit(1);
|
||||
}
|
||||
|
||||
var scanDirectory = function (path) {
|
||||
var fs = require('fs');
|
||||
if (fs.exists(path) && fs.isFile(path)) {
|
||||
console.log(path);
|
||||
} else if (fs.isDirectory(path)) {
|
||||
fs.list(path).forEach(function (e) {
|
||||
if ( e !== "." && e !== ".." ) { //< Avoid loops
|
||||
scanDirectory(path + '/' + e);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
scanDirectory(system.args[1]);
|
||||
phantom.exit();
|
44
third_party/phantomjs/examples/server.js
vendored
Normal file
44
third_party/phantomjs/examples/server.js
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
"use strict";
|
||||
var page = require('webpage').create();
|
||||
var server = require('webserver').create();
|
||||
var system = require('system');
|
||||
var host, port;
|
||||
|
||||
if (system.args.length !== 2) {
|
||||
console.log('Usage: server.js <some port>');
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
port = system.args[1];
|
||||
var listening = server.listen(port, function (request, response) {
|
||||
console.log("GOT HTTP REQUEST");
|
||||
console.log(JSON.stringify(request, null, 4));
|
||||
|
||||
// we set the headers here
|
||||
response.statusCode = 200;
|
||||
response.headers = {"Cache": "no-cache", "Content-Type": "text/html"};
|
||||
// this is also possible:
|
||||
response.setHeader("foo", "bar");
|
||||
// now we write the body
|
||||
// note: the headers above will now be sent implictly
|
||||
response.write("<html><head><title>YES!</title></head>");
|
||||
// note: writeBody can be called multiple times
|
||||
response.write("<body><p>pretty cool :)</body></html>");
|
||||
response.close();
|
||||
});
|
||||
if (!listening) {
|
||||
console.log("could not create web server listening on port " + port);
|
||||
phantom.exit();
|
||||
}
|
||||
var url = "http://localhost:" + port + "/foo/bar.php?asdf=true";
|
||||
console.log("SENDING REQUEST TO:");
|
||||
console.log(url);
|
||||
page.open(url, function (status) {
|
||||
if (status !== 'success') {
|
||||
console.log('FAIL to load the address');
|
||||
} else {
|
||||
console.log("GOT REPLY FROM SERVER:");
|
||||
console.log(page.content);
|
||||
}
|
||||
phantom.exit();
|
||||
});
|
||||
}
|
35
third_party/phantomjs/examples/serverkeepalive.js
vendored
Normal file
35
third_party/phantomjs/examples/serverkeepalive.js
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
"use strict";
|
||||
var port, server, service,
|
||||
system = require('system');
|
||||
|
||||
if (system.args.length !== 2) {
|
||||
console.log('Usage: serverkeepalive.js <portnumber>');
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
port = system.args[1];
|
||||
server = require('webserver').create();
|
||||
|
||||
service = server.listen(port, { keepAlive: true }, function (request, response) {
|
||||
console.log('Request at ' + new Date());
|
||||
console.log(JSON.stringify(request, null, 4));
|
||||
|
||||
var body = JSON.stringify(request, null, 4);
|
||||
response.statusCode = 200;
|
||||
response.headers = {
|
||||
'Cache': 'no-cache',
|
||||
'Content-Type': 'text/plain',
|
||||
'Connection': 'Keep-Alive',
|
||||
'Keep-Alive': 'timeout=5, max=100',
|
||||
'Content-Length': body.length
|
||||
};
|
||||
response.write(body);
|
||||
response.close();
|
||||
});
|
||||
|
||||
if (service) {
|
||||
console.log('Web server running on port ' + port);
|
||||
} else {
|
||||
console.log('Error: Could not create web server listening on port ' + port);
|
||||
phantom.exit();
|
||||
}
|
||||
}
|
43
third_party/phantomjs/examples/simpleserver.js
vendored
Normal file
43
third_party/phantomjs/examples/simpleserver.js
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
"use strict";
|
||||
var port, server, service,
|
||||
system = require('system');
|
||||
|
||||
if (system.args.length !== 2) {
|
||||
console.log('Usage: simpleserver.js <portnumber>');
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
port = system.args[1];
|
||||
server = require('webserver').create();
|
||||
|
||||
service = server.listen(port, function (request, response) {
|
||||
|
||||
console.log('Request at ' + new Date());
|
||||
console.log(JSON.stringify(request, null, 4));
|
||||
|
||||
response.statusCode = 200;
|
||||
response.headers = {
|
||||
'Cache': 'no-cache',
|
||||
'Content-Type': 'text/html'
|
||||
};
|
||||
response.write('<html>');
|
||||
response.write('<head>');
|
||||
response.write('<title>Hello, world!</title>');
|
||||
response.write('</head>');
|
||||
response.write('<body>');
|
||||
response.write('<p>This is from PhantomJS web server.</p>');
|
||||
response.write('<p>Request data:</p>');
|
||||
response.write('<pre>');
|
||||
response.write(JSON.stringify(request, null, 4));
|
||||
response.write('</pre>');
|
||||
response.write('</body>');
|
||||
response.write('</html>');
|
||||
response.close();
|
||||
});
|
||||
|
||||
if (service) {
|
||||
console.log('Web server running on port ' + port);
|
||||
} else {
|
||||
console.log('Error: Could not create web server listening on port ' + port);
|
||||
phantom.exit();
|
||||
}
|
||||
}
|
27
third_party/phantomjs/examples/sleepsort.js
vendored
Normal file
27
third_party/phantomjs/examples/sleepsort.js
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
// sleepsort.js - Sort integers from the commandline in a very ridiculous way: leveraging timeouts :P
|
||||
|
||||
"use strict";
|
||||
var system = require('system');
|
||||
|
||||
function sleepSort(array, callback) {
|
||||
var sortedCount = 0,
|
||||
i, len;
|
||||
for ( i = 0, len = array.length; i < len; ++i ) {
|
||||
setTimeout((function(j){
|
||||
return function() {
|
||||
console.log(array[j]);
|
||||
++sortedCount;
|
||||
(len === sortedCount) && callback();
|
||||
};
|
||||
}(i)), array[i]);
|
||||
}
|
||||
}
|
||||
|
||||
if ( system.args.length < 2 ) {
|
||||
console.log("Usage: phantomjs sleepsort.js PUT YOUR INTEGERS HERE SEPARATED BY SPACES");
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
sleepSort(system.args.slice(1), function() {
|
||||
phantom.exit();
|
||||
});
|
||||
}
|
19
third_party/phantomjs/examples/stdin-stdout-stderr.js
vendored
Normal file
19
third_party/phantomjs/examples/stdin-stdout-stderr.js
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
"use strict";
|
||||
var system = require('system');
|
||||
|
||||
system.stdout.write('Hello, system.stdout.write!');
|
||||
system.stdout.writeLine('\nHello, system.stdout.writeLine!');
|
||||
|
||||
system.stderr.write('Hello, system.stderr.write!');
|
||||
system.stderr.writeLine('\nHello, system.stderr.writeLine!');
|
||||
|
||||
system.stdout.writeLine('system.stdin.readLine(): ');
|
||||
var line = system.stdin.readLine();
|
||||
system.stdout.writeLine(JSON.stringify(line));
|
||||
|
||||
// This is essentially a `readAll`
|
||||
system.stdout.writeLine('system.stdin.read(5): (ctrl+D to end)');
|
||||
var input = system.stdin.read(5);
|
||||
system.stdout.writeLine(JSON.stringify(input));
|
||||
|
||||
phantom.exit(0);
|
10
third_party/phantomjs/examples/universe.js
vendored
Normal file
10
third_party/phantomjs/examples/universe.js
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
// This is to be used by "module.js" (and "module.coffee") example(s).
|
||||
// There should NOT be a "universe.coffee" as only 1 of the 2 would
|
||||
// ever be loaded unless the file extension was specified.
|
||||
|
||||
"use strict";
|
||||
exports.answer = 42;
|
||||
|
||||
exports.start = function () {
|
||||
console.log('Starting the universe....');
|
||||
}
|
25
third_party/phantomjs/examples/unrandomize.js
vendored
Normal file
25
third_party/phantomjs/examples/unrandomize.js
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
// Modify global object at the page initialization.
|
||||
// In this example, effectively Math.random() always returns 0.42.
|
||||
|
||||
"use strict";
|
||||
var page = require('webpage').create();
|
||||
|
||||
page.onInitialized = function () {
|
||||
page.evaluate(function () {
|
||||
Math.random = function() {
|
||||
return 42 / 100;
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
page.open('http://ariya.github.com/js/random/', function (status) {
|
||||
var result;
|
||||
if (status !== 'success') {
|
||||
console.log('Network error.');
|
||||
} else {
|
||||
console.log(page.evaluate(function () {
|
||||
return document.getElementById('numbers').textContent;
|
||||
}));
|
||||
}
|
||||
phantom.exit();
|
||||
});
|
15
third_party/phantomjs/examples/useragent.js
vendored
Normal file
15
third_party/phantomjs/examples/useragent.js
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
"use strict";
|
||||
var page = require('webpage').create();
|
||||
console.log('The default user agent is ' + page.settings.userAgent);
|
||||
page.settings.userAgent = 'SpecialAgent';
|
||||
page.open('http://www.httpuseragent.org', function (status) {
|
||||
if (status !== 'success') {
|
||||
console.log('Unable to access network');
|
||||
} else {
|
||||
var ua = page.evaluate(function () {
|
||||
return document.getElementById('myagent').innerText;
|
||||
});
|
||||
console.log(ua);
|
||||
}
|
||||
phantom.exit();
|
||||
});
|
6
third_party/phantomjs/examples/version.js
vendored
Normal file
6
third_party/phantomjs/examples/version.js
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
"use strict";
|
||||
console.log('using PhantomJS version ' +
|
||||
phantom.version.major + '.' +
|
||||
phantom.version.minor + '.' +
|
||||
phantom.version.patch);
|
||||
phantom.exit();
|
58
third_party/phantomjs/examples/waitfor.js
vendored
Normal file
58
third_party/phantomjs/examples/waitfor.js
vendored
Normal file
@ -0,0 +1,58 @@
|
||||
/**
|
||||
* Wait until the test condition is true or a timeout occurs. Useful for waiting
|
||||
* on a server response or for a ui change (fadeIn, etc.) to occur.
|
||||
*
|
||||
* @param testFx javascript condition that evaluates to a boolean,
|
||||
* it can be passed in as a string (e.g.: "1 == 1" or "$('#bar').is(':visible')" or
|
||||
* as a callback function.
|
||||
* @param onReady what to do when testFx condition is fulfilled,
|
||||
* it can be passed in as a string (e.g.: "1 == 1" or "$('#bar').is(':visible')" or
|
||||
* as a callback function.
|
||||
* @param timeOutMillis the max amount of time to wait. If not specified, 3 sec is used.
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
function waitFor(testFx, onReady, timeOutMillis) {
|
||||
var maxtimeOutMillis = timeOutMillis ? timeOutMillis : 3000, //< Default Max Timout is 3s
|
||||
start = new Date().getTime(),
|
||||
condition = false,
|
||||
interval = setInterval(function() {
|
||||
if ( (new Date().getTime() - start < maxtimeOutMillis) && !condition ) {
|
||||
// If not time-out yet and condition not yet fulfilled
|
||||
condition = (typeof(testFx) === "string" ? eval(testFx) : testFx()); //< defensive code
|
||||
} else {
|
||||
if(!condition) {
|
||||
// If condition still not fulfilled (timeout but condition is 'false')
|
||||
console.log("'waitFor()' timeout");
|
||||
phantom.exit(1);
|
||||
} else {
|
||||
// Condition fulfilled (timeout and/or condition is 'true')
|
||||
console.log("'waitFor()' finished in " + (new Date().getTime() - start) + "ms.");
|
||||
typeof(onReady) === "string" ? eval(onReady) : onReady(); //< Do what it's supposed to do once the condition is fulfilled
|
||||
clearInterval(interval); //< Stop this interval
|
||||
}
|
||||
}
|
||||
}, 250); //< repeat check every 250ms
|
||||
};
|
||||
|
||||
|
||||
var page = require('webpage').create();
|
||||
|
||||
// Open Twitter on 'sencha' profile and, onPageLoad, do...
|
||||
page.open("http://twitter.com/#!/sencha", function (status) {
|
||||
// Check for page load success
|
||||
if (status !== "success") {
|
||||
console.log("Unable to access network");
|
||||
} else {
|
||||
// Wait for 'signin-dropdown' to be visible
|
||||
waitFor(function() {
|
||||
// Check in the page if a specific element is now visible
|
||||
return page.evaluate(function() {
|
||||
return $("#signin-dropdown").is(":visible");
|
||||
});
|
||||
}, function() {
|
||||
console.log("The sign-in dialog should be visible now.");
|
||||
phantom.exit();
|
||||
});
|
||||
}
|
||||
});
|
73
third_party/phantomjs/examples/walk_through_frames.js
vendored
Normal file
73
third_party/phantomjs/examples/walk_through_frames.js
vendored
Normal file
@ -0,0 +1,73 @@
|
||||
"use strict";
|
||||
var p = require("webpage").create();
|
||||
|
||||
function pageTitle(page) {
|
||||
return page.evaluate(function(){
|
||||
return window.document.title;
|
||||
});
|
||||
}
|
||||
|
||||
function setPageTitle(page, newTitle) {
|
||||
page.evaluate(function(newTitle){
|
||||
window.document.title = newTitle;
|
||||
}, newTitle);
|
||||
}
|
||||
|
||||
p.open("../test/webpage-spec-frames/index.html", function(status) {
|
||||
console.log("pageTitle(): " + pageTitle(p));
|
||||
console.log("currentFrameName(): "+p.currentFrameName());
|
||||
console.log("childFramesCount(): "+p.childFramesCount());
|
||||
console.log("childFramesName(): "+p.childFramesName());
|
||||
console.log("setPageTitle(CURRENT TITLE+'-visited')"); setPageTitle(p, pageTitle(p) + "-visited");
|
||||
console.log("");
|
||||
|
||||
console.log("p.switchToChildFrame(\"frame1\"): "+p.switchToChildFrame("frame1"));
|
||||
console.log("pageTitle(): " + pageTitle(p));
|
||||
console.log("currentFrameName(): "+p.currentFrameName());
|
||||
console.log("childFramesCount(): "+p.childFramesCount());
|
||||
console.log("childFramesName(): "+p.childFramesName());
|
||||
console.log("setPageTitle(CURRENT TITLE+'-visited')"); setPageTitle(p, pageTitle(p) + "-visited");
|
||||
console.log("");
|
||||
|
||||
console.log("p.switchToChildFrame(\"frame1-2\"): "+p.switchToChildFrame("frame1-2"));
|
||||
console.log("pageTitle(): " + pageTitle(p));
|
||||
console.log("currentFrameName(): "+p.currentFrameName());
|
||||
console.log("childFramesCount(): "+p.childFramesCount());
|
||||
console.log("childFramesName(): "+p.childFramesName());
|
||||
console.log("setPageTitle(CURRENT TITLE+'-visited')"); setPageTitle(p, pageTitle(p) + "-visited");
|
||||
console.log("");
|
||||
|
||||
console.log("p.switchToParentFrame(): "+p.switchToParentFrame());
|
||||
console.log("pageTitle(): " + pageTitle(p));
|
||||
console.log("currentFrameName(): "+p.currentFrameName());
|
||||
console.log("childFramesCount(): "+p.childFramesCount());
|
||||
console.log("childFramesName(): "+p.childFramesName());
|
||||
console.log("setPageTitle(CURRENT TITLE+'-visited')"); setPageTitle(p, pageTitle(p) + "-visited");
|
||||
console.log("");
|
||||
|
||||
console.log("p.switchToChildFrame(0): "+p.switchToChildFrame(0));
|
||||
console.log("pageTitle(): " + pageTitle(p));
|
||||
console.log("currentFrameName(): "+p.currentFrameName());
|
||||
console.log("childFramesCount(): "+p.childFramesCount());
|
||||
console.log("childFramesName(): "+p.childFramesName());
|
||||
console.log("setPageTitle(CURRENT TITLE+'-visited')"); setPageTitle(p, pageTitle(p) + "-visited");
|
||||
console.log("");
|
||||
|
||||
console.log("p.switchToMainFrame()"); p.switchToMainFrame();
|
||||
console.log("pageTitle(): " + pageTitle(p));
|
||||
console.log("currentFrameName(): "+p.currentFrameName());
|
||||
console.log("childFramesCount(): "+p.childFramesCount());
|
||||
console.log("childFramesName(): "+p.childFramesName());
|
||||
console.log("setPageTitle(CURRENT TITLE+'-visited')"); setPageTitle(p, pageTitle(p) + "-visited");
|
||||
console.log("");
|
||||
|
||||
console.log("p.switchToChildFrame(\"frame2\"): "+p.switchToChildFrame("frame2"));
|
||||
console.log("pageTitle(): " + pageTitle(p));
|
||||
console.log("currentFrameName(): "+p.currentFrameName());
|
||||
console.log("childFramesCount(): "+p.childFramesCount());
|
||||
console.log("childFramesName(): "+p.childFramesName());
|
||||
console.log("setPageTitle(CURRENT TITLE+'-visited')"); setPageTitle(p, pageTitle(p) + "-visited");
|
||||
console.log("");
|
||||
|
||||
phantom.exit();
|
||||
});
|
Loading…
Reference in New Issue
Block a user