phontomjs webPage模块方法

2024-05-07 02:08

本文主要是介绍phontomjs webPage模块方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

随时随地技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)

addCookie

addCookie(Cookie) {boolean}

Introduced: PhantomJS 1.7

Add a Cookie to the page. If the domain does not match the current page, the Cookie will be ignored/rejected. Returns true if successfully added, otherwise false.

Examples

var webPage = require('webpage');
var page = webPage.create();phantom.addCookie({'name'     : 'Valid-Cookie-Name',   /* required property */'value'    : 'Valid-Cookie-Value',  /* required property */'domain'   : 'localhost','path'     : '/foo',                /* required property */'httponly' : true,'secure'   : false,'expires'  : (new Date()).getTime() + (1000 * 60 * 60)   /* <-- expires in 1 hour */

childFramesCount

Deprecated.

Examples

var webPage = require('webpage');
var page = webPage.create();
// @TODO: Finish page.childFramesCount example.

childFramesName

Deprecated.

Examples

var webPage = require('webpage');
var page = webPage.create();
// @TODO: Finish page.childFramesName example.

clearCookies

clearCookies() {void}

Introduced: PhantomJS 1.7

Delete all Cookies visible to the current URL.

Examples

var webPage = require('webpage');
var page = webPage.create();
// @TODO: Finish page.clearCookies example.

close

close() {void}

Introduced: PhantomJS 1.7

Close the page and releases the memory heap associated with it. Do not use the page instance after calling this.

Due to some technical limitations, the web page object might not be completely garbage collected. This is often encountered when the same object is used over and over again. Calling this function may stop the increasing heap allocation.

Examples

var webPage = require('webpage');
var page = webPage.create();
// @TODO: Finish page.close example.

currentFrameName

Deprecated.

Examples

var webPage = require('webpage');
var page = webPage.create();
// @TODO: Finish page.currentFrameName example.

deleteCookie

deleteCookie(cookieName) {boolean}

Introduced: PhantomJS 1.7

Delete any Cookies visible to the current URL with a ‘name’ property matching cookieName. Returns true if successfully deleted, otherwise false.

Examples

var webPage = require('webpage');
var page = webPage.create();page.deleteCookie('Added-Cookie-Name');

evaluateAsync

evaluateAsync(function, [delayMillis, arg1, arg2, ...]) {void}

Evaluates the given function in the context of the web page, without blocking the current execution. The function returns immediately and there is no return value. This is useful to run some script asynchronously.

The second argument indicates the time (in milliseconds) before the function should execute. The remaining arguments are passed to the function, as with evaluate. You must specify a delay (which can be 0) if you want to pass in any arguments.

Examples

Asynchronous AJAX

var webPage = require('webpage');
var page = webPage.create();page.open("", function(status) {page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {page.evaluateAsync(function() {$.ajax({url: "api1", success: function() {}});});page.evaluateAsync(function(apiUrl) {$.ajax({url: apiUrl, success: function() {}});}, 1000, "api2");});
});

evaluateJavaScript

evaluateJavaScript(str)

Evaluate a function contained in a string.

evaluateJavaScript evaluates the function defined in the string in the context of the web page. It is similar to evaluate.

Examples

Set a variable and log it from the web page

This example passes a constant value from phantomjs to the window object in the context of the web page, and then logs that value.

var webPage = require('webpage');
var page = webPage.create();page.onConsoleMessage = function(msg) {console.log('The web page said: ' + msg);
};page.open('http://phantomjs.org/', function(status) {var script1 = "function(){ window.phantomVar='phantomjs made me do it!'; }";var script2 = "function(){ console.log(window.phantomVar); }";page.evaluateJavaScript(script1);page.evaluateJavaScript(script2);phantom.exit();
});

Notice that str must contain the text of a function declaration. The declared function is invoked immediately.

If you try to use it simply to define a variable like this. it won’t work.

  page.evaluateJavaScript("window.phantomVar='phantomjs made me do it!';"); /*wrong*/

If you try this you’ll get an error message like this:

SyntaxError: Expected token ')'phantomjs://webpage.evaluate():1 in evaluateJavaScript

Extract the phantomjs.org website’s logo url

var webPage = require('webpage');
var page = webPage.create();page.onConsoleMessage = function(msg) {console.log('CONSOLE: ' + msg);
};page.open('http://phantomjs.org/', function(status) {var logoUrl = page.evaluateJavaScript('function(){return document.body.querySelector("img").src;}');console.log(logoUrl); // http://phantomjs.org/img/phantomjs-logo.pngphantom.exit();});

evaluate

evaluate(function, arg1, arg2, ...) {object}

Evaluates the given function in the context of the web page. The execution is sandboxed, the web page has no access to the phantom object and it can’t probe its own setting.

Examples

Get the page title from Bing.com (1)

var webPage = require('webpage');
var page = webPage.create();page.open('http://m.bing.com', function(status) {var title = page.evaluate(function() {return document.title;});console.log(title);phantom.exit();});

Get the page title from Bing.com (2)

As of PhantomJS 1.6, JSON-serializable arguments can be passed to the function. In the following example, the text value of a DOM element is extracted.

The following example achieves the same end goal as the previous example but the element is chosen based on a selector which is passed to the evaluate call:

page.open('http://m.bing.com', function(status) {var title = page.evaluate(function(s) {return document.querySelector(s).innerText;}, 'title');console.log(title);phantom.exit();});

Note: The arguments and the return value to the evaluate function must be a simple primitive object. The rule of thumb: if it can be serialized via JSON, then it is fine.

Closures, functions, DOM nodes, etc. will not work!

Any console message from a web page, including from the code inside evaluate, will not be displayed by default. To override this behavior, use the onConsoleMessage callback. The first example can be rewritten to:

Get the page title from Bing.com and print it inside evaluate

var webPage = require('webpage');
var page = webPage.create();page.onConsoleMessage = function(msg) {console.log(msg);
}page.open('http://m.bing.com', function(status) {page.evaluate(function() {console.log(document.title);});phantom.exit();});

getPage

getPage(windowName)

Examples

var webPage = require('webpage');
var page = webPage.create();
// @TODO: Finish page.getPage example.

goBack

goBack()

Examples

var webPage = require('webpage');
var page = webPage.create();
// @TODO: Finish page.goBack example.

goForward

goForward()

Examples

var webPage = require('webpage');
var page = webPage.create();
// @TODO: Finish page.goForward example.

go

go(index)

Examples

var webPage = require('webpage');
var page = webPage.create();
// @TODO: Finish page.go example.

includeJs

includeJs(url, callback) {void}

Includes external script from the specified url (usually a remote location) on the page and executes the callback upon completion.

Examples

var webPage = require('webpage');
var page = webPage.create();page.includeJs(// Include the https version, you can change this to http if you like.'https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js',function() {(page.evaluate(function() {// jQuery is loaded, now manipulate the DOMvar $loginForm = $('form#login');$loginForm.find('input[name="username"]').value('phantomjs');$loginForm.find('input[name="password"]').value('c45p3r');}))}
);

injectJs

injectJs(filename) {boolean}

Injects external script code from the specified file into the page (like page.includeJs, except that the file does not need to be accessible from the hosted page).

If the file cannot be found in the current directory, libraryPath is used for additional look up.

This function returns true if injection is successful, otherwise it returns false.

Examples

Inject do.js file into phantomjs.org page

var webPage = require('webpage');
var page = webPage.create();page.open('http://www.phantomjs.org', function(status) {if (status === "success") {page.includeJs('http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js', function() {if (page.injectJs('do.js')) {var title = page.evaluate(function() {// returnTitle is a function loaded from our do.js file - see belowreturn returnTitle();});console.log(title);phantom.exit();}});}
});

Where do.js is simply:

window.returnTitle = function() {return document.title;
};

The console log will be:

"PhantomJS | PhantomJS"

Note: The arguments and the return value to the evaluate function must be a simple primitive object. The rule of thumb: if it can be serialized via JSON, then it is fine.

Closures, functions, DOM nodes, etc. will not work!

openUrl

openUrl(url, httpConf, settings)

Examples

var webPage = require('webpage');
var page = webPage.create();
// @TODO: Finish page.openUrl example.

open

open(url, callback) {void}

open(url, method, callback) {void}

open(url, method, data, callback) {void}

open(url, settings, callback) {void}

Opens the url and loads it to the page. Once the page is loaded, the optional callbackis called using page.onLoadFinished, with the page status ('success' or 'fail') provided to it.

Examples

GET google.com and report “success” or “fail”

var webPage = require('webpage');
var page = webPage.create();page.open('http://www.google.com/', function(status) {console.log('Status: ' + status);// Do other things here...
});

POST data to google.com and report “success” or “fail”

As of PhantomJS 1.2, the open function can be used to request a URL with methods other than GET. This syntax also includes the ability to specify data to be sent with the request. In the following example, we make a request using the POST method, and include some basic data.

var webPage = require('webpage');
var page = webPage.create();
var postBody = 'user=username&password=password';page.open('http://www.google.com/', 'POST', postBody, function(status) {console.log('Status: ' + status);// Do other things here...
});

POST json data to your.custom.api in utf-8 encoding

As of PhantomJS 1.9, the open function can get an object of settings. and with a use of “encoding” key, you can set the custom encoding to your app. In this example, we’ve set the encoding to UTF8, and set the Content-Type header to application/json for making our server know the request has information in json format and not in urlencoded format.

var webPage = require('webpage');
var page = webPage.create();
var settings = {operation: "POST",encoding: "utf8",headers: {"Content-Type": "application/json"},data: JSON.stringify({some: "data",another: ["custom", "data"]})
};page.open('http://your.custom.api', settings, function(status) {console.log('Status: ' + status);// Do other things here...
});

release

release() {void}

Stability: DEPRECATED - Use page.close

Releases memory heap associated with this page. Do not use the page instance after calling this.

Due to some technical limitations, the web page object might not be completely garbage collected. This is often encountered when the same object is used over and over again. Calling this function may stop the increasing heap allocation.

Examples

var webPage = require('webpage');
var page = webPage.create();
// @TODO: Finish page.release example.

reload

Examples

var webPage = require('webpage');
var page = webPage.create();
// @TODO: Finish page.reload example.

renderBase64

renderBase64(format)

Renders the web page to an image buffer and returns the result as a Base64-encoded string representation of that image.

Supported formats

  • PNG
  • GIF
  • JPEG

Examples

var webPage = require('webpage');
var page = webPage.create();page.viewportSize = {width: 1920,height: 1080
};page.open('http://phantomjs.org', function (status) {var base64 = page.renderBase64('PNG');console.log(base64);phantom.exit();
});

renderBuffer

renderBuffer(format, quality)

Renders the web page to an image buffer which can be sent directly to a client (e.g. using the webserver module)

Supported formats

  • PNG
  • GIF
  • JPEG

Examples

var server = require('webserver').create();var listening = server.listen(8001, function(request, response) {var url = "http://phantomjs.org", format = 'png', quality = -1;var page = require('webpage').create();page.viewportSize = {width: 800,height: 600};page.open(url, function start(status) {// Buffer is an Uint8ClampedArrayvar buffer = page.renderBuffer(format, quality);response.statusCode = 200;response.headers = {"Cache": "no-cache","Content-Type": "image/" + format};page.close();// Pass the Buffer to 'write' to send the Uint8ClampedArray to the clientresponse.write(buffer);response.close();});});

render

render(filename [, {format, quality}]) {void}

Renders the web page to an image buffer and saves it as the specified filename.

Currently, the output format is automatically set based on the file extension.

Supported formats

  • PDF
  • PNG
  • JPEG
  • BMP
  • PPM
  • GIF support depends on the build of Qt used

Quality

An integer between 0 and 100.

The quality setting only has an effect on jpeg and png formats. With jpeg, it sets the quality level as a percentage, in the same way as most image editors. (The output file always has 2x2 subsampling.) A level of 0 produces a very small, very low quality file, and 100 produces a much larger, high-quality file. The default level is 75. With png, it sets the lossless (Deflate) compression level, with 0 producing the smallest files, and 100 producing the largest. However, the files look identical, and are always true-colour.

Examples

var webPage = require('webpage');
var page = webPage.create();page.viewportSize = { width: 1920, height: 1080 };
page.open("http://www.google.com", function start(status) {page.render('google_home.jpeg', {format: 'jpeg', quality: '100'});phantom.exit();
});

More information

The image generation code (except for PDF output) uses QImage from the Qt framework, documented at http://doc.qt.io/qt-5/qimage.html#save.

sendEvent

Sends an event to the web page.

1.7 implementation source.

The events are not synthetic DOM events, each event is sent to the web page as if it comes as part of user interaction.

Mouse events

sendEvent(mouseEventType[, mouseX, mouseY, button='left'])

The first argument is the event type. Supported types are 'mouseup''mousedown''mousemove''doubleclick' and 'click'. The next two arguments are optional but represent the mouse position for the event.

The button parameter (defaults to left) specifies the button to push.

For 'mousemove', however, there is no button pressed (i.e. it is not dragging).

Keyboard events

sendEvent(keyboardEventType, keyOrKeys, [null, null, modifier])

The first argument is the event type. The supported types are: keyupkeypress and keydown. The second parameter is a key (from page.event.key), or a string.

You can also indicate a fifth argument, which is an integer indicating the modifier key.

  • 0: No modifier key is pressed
  • 0x02000000: A Shift key on the keyboard is pressed
  • 0x04000000: A Ctrl key on the keyboard is pressed
  • 0x08000000: An Alt key on the keyboard is pressed
  • 0x10000000: A Meta key on the keyboard is pressed
  • 0x20000000: A keypad button is pressed

Third and fourth argument are not taken account for keyboard events. Just give null for them.

Examples

Simulate a shift+alt+A keyboard combination

var webPage = require('webpage');
var page = webPage.create();page.sendEvent('keypress', page.event.key.A, null, null, 0x02000000 |

setContent

Introduced: PhantomJS 1.8

Allows to set both page.content and page.url properties.

The webpage will be reloaded with the new content and the current location set as the given url, without any actual http request being made.

Examples

var webPage = require('webpage');
var page = webPage.create();
var expectedContent = '<html><body><div>Test div</div></body></html>';
var expectedLocation = 'http://www.phantomjs.org/';
page.setContent(expectedContent, expectedLocation);

stop

Examples

var webPage = require('webpage');
var page = webPage.create();
// @TODO: Finish page.stop example.

switchToChildFrame

switchToChildFrame(frameName) or switchToChildFrame(framePosition)

Deprecated.

Examples

var webPage = require('webpage');
var page = webPage.create();
// @TODO: Finish page.switchToChildFrame example.

switchToFocusedFrame

Examples

var webPage = require('webpage');
var page = webPage.create();
// @TODO: Finish page.switchToFocusedFrame example.

switchToFrame

if the page have othe frame, you can use switchToFrame(frameName) or switchToFrame(framePosition) to exchange it.Other similar methods are switchToChildFrame(),switchToFocusedFrame,switchToMainFrame and switchToParentFrame

Examples

var webPage = require('webpage');
var page = webPage.create();
page.open('http://www.sample.com',function(status){if(status!== 'success'){console.log('Unable to access network');}else{page.switchToFrame('framwName/framwPosition');console.log(page.frameContent);phantom.exit();}
});

switchToMainFrame

Examples

var webPage = require('webpage');
var page = webPage.create();
// @TODO: Finish page.switchToMainFrame example.

switchToParentFrame

Examples

var webPage = require('webpage');
var page = webPage.create();
// @TODO: Finish page.switchToParentFrame example.

uploadFile

uploadFile(selector, filename)

Uploads the specified file (filename) to the form element associated with the selector.

This function is used to automate the upload of a file, which is usually handled with a file dialog in a traditional browser. Since there is no dialog in this headless mode, such an upload mechanism is handled via this special function instead.

Examples

var webPage = require('webpage');
var page = webPage.create();page.uploadFile('input[name=image]', '/path/to/some/photo.jpg');

这篇关于phontomjs webPage模块方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/966032

相关文章

Nginx安全防护的多种方法

《Nginx安全防护的多种方法》在生产环境中,需要隐藏Nginx的版本号,以避免泄漏Nginx的版本,使攻击者不能针对特定版本进行攻击,下面就来介绍一下Nginx安全防护的方法,感兴趣的可以了解一下... 目录核心安全配置1.编译安装 Nginx2.隐藏版本号3.限制危险请求方法4.请求限制(CC攻击防御)

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函