因为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页面操作的更多相关文章

  1. 父页面操作iframe子页面的安全漏洞及跨域限制问题

    一.父子交互的跨域限制 同域情况下,父页面和子页面可以通过iframe.contentDocument或者parent.document来交互(彼此做DOM操作等,如父页面往子页面注入css). 跨域 ...

  2. 【Egret】实现web页面操作PC端本地文件操作

    Egret 实现web页面操作PC端本地文件操作: http://edn.egret.com/cn/book/page/pid/181 //------------------------------ ...

  3. Asp.Net Core 2.0 项目实战(11) 基于OnActionExecuting全局过滤器,页面操作权限过滤控制到按钮级

    1.权限管理 权限管理的基本定义:百度百科. 基于<Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员.后台管理员同时登录>我们做过了登录认证, ...

  4. 在子页面操作父页面元素和iframe说明

    实现功能:在子页面操作父页面元素. 在实际编码的过程中,大家一定有这种需求:在父级页面有一个<iframe scrolling='auto'></iframe>内联框架,而我们 ...

  5. 高并发分布式系统中生成全局唯一(订单号)Id js返回上一页并刷新、返回上一页、自动刷新页面 父页面操作嵌套iframe子页面的HTML标签元素 .net判断System.Data.DataRow中是否包含某列 .Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数

    高并发分布式系统中生成全局唯一(订单号)Id   1.GUID数据因毫无规律可言造成索引效率低下,影响了系统的性能,那么通过组合的方式,保留GUID的10个字节,用另6个字节表示GUID生成的时间(D ...

  6. selenium - 常用页面操作

    # 2.常用页面操作 # 访问某一个页面url = 'http://www.baidu.com'driver.get(url) # 获取页面的标题title = driver.titleprint(t ...

  7. 关于网站登录后的页面操作所携带的不同cookie值

    对于课堂派网站,登录后的页面操作只需要携带PHPSESSID或者cookie中间那部分即可,两个都带也可,SERVERID不知道是干啥的,每次响应的都会变. 代码实现: cookie = None c ...

  8. HTML5+和MUI页面操作

    最近总是碰到针对页面的一些操作,以下是针对webview的一些简单方法以及个人理解.更多详尽的内容请参考标准文档:http://www.html5plus.org/doc/zh_cn/webview. ...

  9. SRX550路由器缓存满了无法在web页面操作解决方法

    SRX550路由器缓存满了无法在web页面操作解决方法   首页出现下图为满的标志,我这个文档就是解决这中情况,让web页面可以操作的 1.  打开命令行,输入用户密码,进入路由器 注意:这里使用te ...

随机推荐

  1. Python 基础语法——数字和表达式(包含数学上的一些函数)

    >>> 2+2 4 >>> 1/2 0 >>> 1.0/2.0 0.5 >>> 1/2.0 0.5 >>> 1 ...

  2. #pragma的一些用法

    1.#pragma message message 参数:Message参数能够在编译信息输出窗口输出相应的信息,这对于源代码的信息控制特别重要,其使用方法为: #pragma message(&qu ...

  3. 解惑《你必须知道的.net》——C#继承关系中【方发表】的创建和调用

    前言: 现在正在读<你必须知道的.net>(第二版)一书,看到IL语言那一章,将call.callvirt和calli时候,书中举了一个例子,是一个三层继承的例子,我一开始看的时候就有点懵 ...

  4. Nodejs学习笔记(十一)—数据采集器示例(request和cheerio)

    写在之前 很多人都有做数据采集的需求,用不同的语言,不同的方式都能实现,我以前也用C#写过,主要还是发送各类请求和正则解析数据比较繁琐些,总体来说没啥不好的,就是效率要差一些, 用nodejs写采集程 ...

  5. spark报错处理

    Spark报错处理 1.问题:org.apache.spark.SparkException: Exception thrown in awaitResult 分析:出现这个情况的原因是spark启动 ...

  6. SharePoint 2013创建应用程序时IIS端口文件夹下没文件

    最近SharePoint 2007迁移到2013的时候,碰到创建应用程序时IIS端口文件夹下没文件的问题,网上找了大把的原因,终于在这里找到了解决方案: Fix: 1. Open IIS on the ...

  7. antlr提取代码注释

    1. 来由 为什么要写提取注释呢,起因是工作需要.弄这么个不太重要的功能点来讲,旨在抛砖引玉. 一般而言,大家使用antlr解析源代码的时候,不会关心注释和空格之类内容,默认会过滤掉,不会放到语法树里 ...

  8. (技术分享) 解决 Firefox 显示“已阻止载入混合活动内容”的问题

    (摘自http://blog.aizhet.com/Windows/18415.html) 从 Firefox 18 开始,如果 HTTPS 页面中包含非加密的 HTTP 内容,浏览器会在控制台输出警 ...

  9. [BZOJ 5074]小B的数字

    Description 题库链接 给你一个长度为 \(n\) 的序列 \(a_1,a_2,\cdots,a_n\) ,让你生成另一个序列 \(b_1,b_2,\cdots,b_n\) ,使得 \(\f ...

  10. 番外篇 之 Win32Api

    C# 调用系统API. 从自己的软件,来操作别人写好的软件. SendMessage 句柄  标识当前进程/控件的一个标识; 本课程所用到的常量信息: private const uint LB_FI ...