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, width: 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
用以下形式表示的浏览器大小{width: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页面操作的更多相关文章
- 父页面操作iframe子页面的安全漏洞及跨域限制问题
一.父子交互的跨域限制 同域情况下,父页面和子页面可以通过iframe.contentDocument或者parent.document来交互(彼此做DOM操作等,如父页面往子页面注入css). 跨域 ...
- 【Egret】实现web页面操作PC端本地文件操作
Egret 实现web页面操作PC端本地文件操作: http://edn.egret.com/cn/book/page/pid/181 //------------------------------ ...
- Asp.Net Core 2.0 项目实战(11) 基于OnActionExecuting全局过滤器,页面操作权限过滤控制到按钮级
1.权限管理 权限管理的基本定义:百度百科. 基于<Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员.后台管理员同时登录>我们做过了登录认证, ...
- 在子页面操作父页面元素和iframe说明
实现功能:在子页面操作父页面元素. 在实际编码的过程中,大家一定有这种需求:在父级页面有一个<iframe scrolling='auto'></iframe>内联框架,而我们 ...
- 高并发分布式系统中生成全局唯一(订单号)Id js返回上一页并刷新、返回上一页、自动刷新页面 父页面操作嵌套iframe子页面的HTML标签元素 .net判断System.Data.DataRow中是否包含某列 .Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数
高并发分布式系统中生成全局唯一(订单号)Id 1.GUID数据因毫无规律可言造成索引效率低下,影响了系统的性能,那么通过组合的方式,保留GUID的10个字节,用另6个字节表示GUID生成的时间(D ...
- selenium - 常用页面操作
# 2.常用页面操作 # 访问某一个页面url = 'http://www.baidu.com'driver.get(url) # 获取页面的标题title = driver.titleprint(t ...
- 关于网站登录后的页面操作所携带的不同cookie值
对于课堂派网站,登录后的页面操作只需要携带PHPSESSID或者cookie中间那部分即可,两个都带也可,SERVERID不知道是干啥的,每次响应的都会变. 代码实现: cookie = None c ...
- HTML5+和MUI页面操作
最近总是碰到针对页面的一些操作,以下是针对webview的一些简单方法以及个人理解.更多详尽的内容请参考标准文档:http://www.html5plus.org/doc/zh_cn/webview. ...
- SRX550路由器缓存满了无法在web页面操作解决方法
SRX550路由器缓存满了无法在web页面操作解决方法 首页出现下图为满的标志,我这个文档就是解决这中情况,让web页面可以操作的 1. 打开命令行,输入用户密码,进入路由器 注意:这里使用te ...
随机推荐
- 解析ASP.NET WebForm和Mvc开发的区别 分类: ASP.NET 2013-12-29 01:59 11738人阅读 评论(5) 收藏
因为以前主要是做WebFrom开发,对MVC开发并没有太深入的了解.自从来到创新工场的新团队后,用的技术都是自己以前没有接触过的,比如:MVC 和EF还有就是WCF,压力一直很大.在很多问题都是不清楚 ...
- 【数组】Search for a Range
题目: Given a sorted array of integers, find the starting and ending position of a given target value. ...
- LogCat里的错误提示 FATAL EXCEPTION: main
程序一运行闪退. 原因为包冲突,将冲突的包删除即可.
- 如何虚拟机里安装Win8操作系统
不多说,直接上干货! Windows Server 2003.2008.2012系统的安装 推荐网址:打开MSDN网站(http://msdn.itellyou.cn ) 关于给电脑换系统,很多人会花 ...
- C/C++ -- Gui编程 -- Qt库的使用 -- 构造函数中添加组件
在构造函数中定义一个标签,设置自动换行和样式表 -----mywidget.cpp----- #include "mywidget.h" #include "ui_myw ...
- centos7下搭建JAVA项目运行环境。 JAVA+MYSQL+TOMCAT+NGINX
环境: centos 7 64位 一.配置mysql 5.71.下载mysql源安装包wget http://dev.mysql.com/get/mysql57-community-release-e ...
- PHP PSR 标准
引用他人文章:http://www.cnblogs.com/52php/p/5852572.html PHP中PSR-[0-4]代码规范 PHP-FIG 在说啥是PSR-[0-4]规范的之前,我觉得我 ...
- 查看本机的ip
1.Windows 1.1.查看ip地址 ipconfig 1.2.查看MAC地址 ipconfig /all 2.Linux 2.1.查看ip地址 ifconfig 2.2.查看MAC地址 ip l ...
- 剑指offer62:二插搜索树的第k个节点
题目描述: 给定一颗二叉搜索树,请找出其中的第k大的结点.例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4. 中序遍历 /* struct TreeNo ...
- jsp页面查询的数据导出到excel
java导入导出excel操作(jxl) jxl.jar 包下载地址:http://www.andykhan.com/jexcelapi/真实下载地址:http://www.andykhan.com/ ...