phantomJs页面操作

因为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

  

原文地址:https://www.cnblogs.com/kongzhagen/p/6273988.html