В этой главе мы приводим еще несколько практических примеров, чтобы понять некоторые важные особенности PhantomJS.
Пример 1 — Найти скорость страницы
В этом примере мы будем использовать PhantomJS для определения скорости страницы для любого заданного URL-адреса страницы.
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(); }); }
Вышеуказанная программа генерирует следующий вывод .
Команда — phantomjs pagespeed.js http://www.google.com
Page title is Google Loading time 1396 msec
Пример 2 — Отправка события клика на страницу
В следующем примере мы будем использовать PhantomJS для отправки события клика на страницу.
var page = require('webpage').create(); page.onConsoleMessage = function(str) { console.log(str); } page.open('http://phantomjs.org/api/phantom/', function(status) { page.render('beforeclick.png'); console.log(page.url); var element = page.evaluate(function() { return document.querySelector('img[src = "http://phantomjs.org/img/phantomjslogo.png"]'); }); page.sendEvent('click', element.offsetLeft, element.offsetTop, 'left'); window.setTimeout(function () { console.log(page.url); page.render('afterclick.png'); phantom.exit(); }, 5000); console.log('element is ' + element); });
Вышеуказанная программа генерирует следующий вывод .
http://phantomjs.org/api/phantom/ element is [object Object] http://phantomjs.org/
Наша программа создаст следующие два изображения PNG в папке bin . Эти два изображения показывают разницу до и после выполнения вышеуказанной программы.
Пример 3 — Отправить форму
В следующем примере показано, как отправить форму с помощью PhantomJS.
var wpage = require('webpage').create(); wpage.open("http://localhost/tasks/submitform.html", function(status) { console.log(status); wpage.uploadFile('input[name = fileToUpload]', 'output.png'); wpage.render("sform.png"); var element = wpage.evaluate(function() { return document.querySelector('input[type = "submit"]'); // getting details of submit button using queryselector. }); wpage.sendEvent('click', element.offsetLeft, element.offsetTop, 'left'); // sendevent is used to send click event and also giving the left and top position of the submit button. window.setTimeout(function () { console.log(wpage.url); wpage.render("submit.png"); // screenshot is saved in submit.png phantom.exit(); }, 5000); console.log('element is ' + element); });
submitform.html
Следующий код показывает, как использовать файл submitform.html .
<html> <head> <title>Window 2</title> </head> <body> <form action = "submitform.php" method = "post" enctype = "multipart/form-data" id = "form1"> <input type = "file" name = "fileToUpload" id = "fileToUpload"> <input type = "submit" value = "Upload Image" name = "submit"> </form> </body> </html>
Как только форма отправлена, она отправляется на submitform.php .
submitform.php
submitform.php просто печатает информацию о файлах.
<?php print_r($_FILES); ?>
Вышеуказанная программа генерирует следующий вывод .
Success element is [object Object] http://localhost/tasks/submitform.php
Изображений
Ниже приведены изображения для загрузки файла и отправки формы .