phantomJs页面操作

摘要:
您可以使用page.includeJs将jquery加载到页面varpage=require(“网页”)中。create();字符串整个页面的HTML内容。cookie-->Cookiespage.customHeaders->对象当前页面的;该对象包含密钥修改和TODOpage.libraryPath-->

因为phantomjs能加载和操纵页面,它可以自动化地完美执行页面的各种操作。

操作文档:

脚本的被执行,就像它真的正在web 浏览器上运行一样。

下面的脚本,是读取元素id为myagent的文本内容

//导入webpage模块,创建一个实例var page = require('webpage').create();
//输出页面默认的userAgent
console.log("The default Useragent is :" + page.settings.userAgent);
//修改页面默认的userAgent
page.settings.userAgent = "SpecialAgent";
//打开网页面
page.open("http://www.httpuseragent.org",function(status){
	if(status != 'success'){
		console.log("Unable to access network");
	}else{
      //执行js代码
		var usa = page.evaluate(function(){
			return document.getElementById("myagent").textContent;
		});
		console.log(usa);
	}
	phantom.exit();
})

  

  

2、从1.6版本开始,你可以使用page.includeJs加载jquery到页面中

var page = require("webpage").create();
page.open("http://www.sample.com",function(){
    引用jquery,执行回调函数
	page.includeJs("http://code.jquery.com/jquery-2.2.4.min.js",function(){
        // evaluate执行JS
		page.evaluate(function(){
			$("button").click();
		})
        退出phantomJs,必须写在includeJs里面,否则可能jquery没加载完成,便结束了phantom
		phantom.exit();
	})
})

  

3、如果我们现在有一个webpage实例,我们能做些什么呢?

属性:

	page.canGoForward --> boolean
window.history.forward是否是一个有效的操作
	page.canGoBack --> boolean	
window.history.back 是否是一个有效的操作
	page.clipRect --> boolean
可以使用以下方式设置成一个对象{top: 0, left: 0,  1024, height: 768},它指定将会拍摄屏幕截图的哪部分。	
	page.content --> string
整个页面的HTML内容
	page.cookies -->object
当前页面的cookies
	page.customHeaders -->object
TODO
	page.event -->object
包含键的修改和TODO
	page.libraryPath -->string
当前库的路径,通常指被执行脚本的路径
	page.loading -->boolean
页面是否正在加载
	page.loadingProgress -->number
页面加载进度,100意味着页面加载完成
	page.navigationLocked -->boolean
TODO
	page.offlineStoragePath -->string
下线数据或sqlite3数据在本地存储的位置
	page.offlineStorageQuota -->number
可离线存储的配额
	page.paperSize -->object
类似clipRect,但采用实际纸张尺寸,例如A4.
	page.scrollPosition -->object
用以下形式表示的当前滚动位置
{left:0
 top:0
 }
	page.settings -->object
useragent串的设置
	page.title -->string
当前页面的TITLE
	page.url -->string
当前页面的URL
	page.viewportSize -->object
用以下形式表示的浏览器大小{1024,height:768}
	page.windowName -->string
由WM分配的浏览器窗口的名字
	page.zoomFactor -->number
缩放系数,默认为1.
		

  函数

page.childFramesCount
page.childFramesName
page.close
page.currentFrameName
page.deleteLater
page.destroyed
page.evaluate
page.initialized
page.injectJs
page.javaScriptAlertSent
page.javaScriptConsoleMessageSent
page.loadFinished
page.loadStarted
page.openUrl
page.release
page.render
page.resourceError
page.resourceReceived
page.resourceRequested
page.uploadFile
page.sendEvent
page.setContent
page.switchToChildFrame
page.switchToMainFrame
page.switchToParentFrame
page.addCookie
page.deleteCookie
page.clearCookies
page.click()
page.refresh()

  事件

onInitialized
onLoadStarted
onLoadFinished
onUrlChanged
onNavigationRequested
onRepaintRequested
onResourceRequested
onResourceReceived
onResourceError
onResourceTimeout
onAlert
onConsoleMessage
onClosing

  

免责声明:文章转载自《phantomJs页面操作》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PHP mysqli获取数据表以及表结构usb2.0、usb3.0、usb3.1、type-c 接口含义与区别下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

spark保存读取csv SequenceFile

前言 Spark读取和保存文件格式是非常多的,json,csv,haoop SequenceFile ,hbase等等。本文就是简单的spark读取文件 spark 读写csv 使用opencsv jar包读取,先在maven配置。 读取方式因逐行读取、以单个文件为key读取整个文件,代码实现略有不同 逐行读取 package com.learn.hado...

CloseHandle()函数的使用

 很多程序在创建线程都这样写的:............ThreadHandle = CreateThread(NULL,0,.....);CloseHandel(ThreadHandle );。。。。。这不是刚好创建又关闭了吗?线程怎么运行呢? ================================================ Closi...

Qt开源作品30-农历控件

一、前言 农历控件在国产linux中必备的控件之一,毕竟要适应国人的习惯,你看win10系统的日历,现在点开来直接就有农历在上面,非常方便人性化,所以在很多用Qt做的项目中,也有农历控件的应用场景,而Qt自带的日历控件比较简单,仔细看过源码的人也只知道,其实就是一堆微调框,下拉框,表格组成的,于是打算借用此方法造一个农历控件,本控件的算法是倪大侠提供的,个...

Video.js

Video.js 官网: https://videojs.com/ 开源HTML5播放器框架 优点 支持多种格式,可以支持MP4、WebM、HLS、RTSP等。 可以自定义主题样式。 插件丰富。 支持广泛,可支持PC端各种浏览器和移动端的浏览器。 插件列表 https://videojs.com/plugins 使用 原生代码,未使用主题样式 <he...

解决logstash.outputs.elasticsearch[main] Could not index event to Elasticsearch status 404

现象:lostack启动正常,logstack收集输入redis数据,输出到elasticsearch写入失败 提示:去建索引 的时候elasticsearch返回404 [2019-11-12T11:37:29,009][WARN ][logstash.outputs.elasticsearch][main] Could not index even...

layer删除确认

经常忘记,记下笔记 layer.confirm("确认删除网址规则:"+url, { title: "删除确认" },function () {   // do something }) 注意点: 操作部分必须写在回调里面,不然会继续往下执行,不像原生js的confirm...