认识phantomjs

PhantomJS是一款webkit内核的headelsss的浏览器,使用QtWebkit, 支持DOM操作、CSS选择器、JSON、Canvas和SVG,可以模拟浏览器的服务。

安装

mac同学使用 brew install casperjs

可以做什么?

1. Headless的网站集成测试

可以和单元测试框架如Jasmine、Mocha和WebDriver集成

2. 屏幕捕捉

可以捕捉的web页面

3.网络监控 性能分析

监控page loading支持输出HAR标准文件,支持使用YSlow和Jenkins进行全自动的性能分析。

4. 爬虫

5. 运行自动化测试QA

phantomjs的生态圈

1. CasperJS:一个开源的导航脚本处理和高级测试工具

2. Mocha-PhantomJS:JavaScript测试框架Mocha的客户端

前端页面监控

前端页面监控:比如,页面第三方系统数据调用失败,模块加载异常、用户白屏、数据不正确。这时候就需要从前端DOM展示的角度来分析。并且出现问题,需要使用邮件、短信通知相关人员修复bug。并且触发报警是要有现场快照,以便复现问题。

UI测试包括网页元素的正确展现,网页交互之后的元素变化等,人工测试很是头疼,并且UI层面的测试用例也不好写。

注入JS文件

var webPage = require(‘webpage‘);
var page = webPage.create();
page.includeJs(‘http://code.jquery.com/jquery-1.10.2.min.js‘, function() {
// 模拟登录
var $testForm = $(‘form#login‘);
$testForm.find(‘input[name="username"]‘).value(‘barret‘);
$testForm.find(‘input[name="password"]‘).value(‘1234‘);
$testForm.submit();
});

执行JS代码

1 var webPage = require(‘webpage‘);
2 var page = webPage.create();
3 page.open(‘http://www.taobao.com‘, function(status) {
4 var title = page.evaluate(function() {
5 return document.title;
6 });
7 console.log(title);
8 phantom.exit();
9 });

测试页面加载速度

var page = require(‘webpage‘).create(),
  system = require(‘system‘),
  t, address;

if (system.args.length === 1) {
  console.log(‘Usage: loadspeed.js <some URL>‘);
  phantom.exit();
}

t = Date.now();
address = system.args[1];
page.open(address, function(status) {
  if (status !== ‘success‘) {
    console.log(‘FAIL to load the address‘);
  } else {
    t = Date.now() - t;
    console.log(‘Loading ‘ + system.args[1]);
    console.log(‘Loading time ‘ + t + ‘ msec‘);
  }
  phantom.exit();
});

phantomjs loadspeed.js http://www.baidu.com  
输出 Loading http://www.baidu.com Loading time 3802msc

屏幕截图
var page = require(‘webpage‘).create();
page.open(‘http://github.com/‘, function() {
  page.render(‘github.png‘);
  phantom.exit();
});

设置页面背景颜色

page.evaluate(function() {
  document.body.bgColor = ‘white‘;
});

确保在render之前



无界面的测试

PhantomJS itself is not a test framework, it is only used to launch the tests via a suitable test runner.

例如Mocha Jasmine WebDriver 

和CI系统持续集成例如Jenkins或者TeamCity,Travis CI已经内置了对PhantomJS的支持。

最好的实践和测试框架CasperJS集成。

相关连接

官网: www.phantomjs.org

时间: 2024-07-31 14:29:18

认识phantomjs的相关文章

python网络爬虫学习(六)利用Pyspider+Phantomjs爬取淘宝模特图片

本篇博文在编写时参考了http://cuiqingcai.com/2652.html,向作者表示感谢 一.新的问题与工具 平时在淘宝上剁手的时候,总是会看到各种各样的模特.由于自己就读于一所男女比例三比一的工科院校--写代码之余看看美女也是极好的放松方式.但一张一张点右键–另存为又显得太过麻烦而且不切实际,毕竟图片太多了.于是,我开始考虑用万能的python来解决问题. 我们先看看淘女郎页面的URL,https://mm.taobao.com/json/request_top_list.htm?

java调用phantomjs采集ajax加载生成的网页

java调用phantomjs采集ajax加载生成的网页 日前有采集需求,当我把所有的对应页面的链接都拿到手,准备开始根据链接去采集(写爬虫爬取)对应的终端页的时候,发觉用程序获取到的数据根本没有对应的内容,可是我的浏览器看到的内容明明是有的,于是浏览器查看源代码也发觉没有,此时想起该网页应该是ajax加载的.不知道ajax的小朋友可以去学下web开发啦. 采集ajax生成的内容手段不外乎两种.一种是通过http观察加载页面时候的请求,然后我们模仿该请求去得到对应的内容,第二种则是模仿浏览器行为

Phantomjs 生成多页PDF

开篇 最近使用 Phantomjs 生成PDF,其中遇到一些问题,导致PDF生成失败,如出现空白文件或一页数据量太大,都是由于没有设置好格式导致.特别是分页问题,感觉资料很少,除了在 StackOverflow 上看到些许资料外,中文社区基本看不到,附上修改后的 rasterize.js 来做讲解: 1 var page = require('webpage').create(), 2 system = require('system'), 3 address, output, size; 4

C#项目中使用 Selenium + PhantomJS 模拟登录博客园

Selenium selenium 是一个web的自动化测试工具,不少学习功能自动化的同学开始首选selenium PhantomJS PhantomJS是一个基于webkit的javascript API.它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JavaScript代码.任何你可以在基于webkit浏览器做的事情,它都能做到.它不仅是个隐形的浏览器,提供了诸如CSS选择器.支持Web标准.DOM操作.JSON.html5.Canvas.SVG等,同时也提供了

selenium2支持无界面操作(HtmlUnit和PhantomJs)

selenium2支持通过各种driver(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver)驱动真实浏览器完成测试的. 其实selenium也是支持无界面浏览器操作的.比如说HtmlUnit和PhantomJs.他们都不是真正的浏览器,运行时不会渲染页面显示内容,但是支持页面元素查找,js的执行等:由于不进行css和gui渲染,运行效率要比真实的浏览器要快很多. 1.htmlUnit是java实现的类浏览器程序,包含在sel

Windows下 Python Selenium PhantomJS 抓取网页并截图

安装Python https://www.python.org/downloads/release 下载安装 将Python目录加入PATH 安装SetupTools https://pypi.Python.org/pypi/setuptools 下载解压到Python目录并进入 cmd执行Python setup.py install 安装Pip https://pypi.Python.org/pypi/setuptools 下载解压到Python目录并进入 cmd执行Python setup

Selenium修改PhantomJS请求头(Headers)

headers = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko)

京东前端:PhantomJS 和NodeJS在网站前端监控平台的最佳实践

1. 为什么需要一个前端监控系统 通常在一个大型的 Web 项目中有很多监控系统,比如后端的服务 API 监控,接口存活.调用.延迟等监控,这些一般都用来监控后台接口数据层面的信息.而且对于大型网站系统来说,从后端服务到前台展示会有很多层:内网 VIP.CDN 等. 但是这些监控并不能准确地反应用户看到的前端页面状态,比如:页面第三方系统数据调用失败,模块加载异常,数据不正确,空白开天窗等. 相关厂商内容 Native动态化最新技术解析 不可错过的智能时代的大前端 性能优化最佳实践经验谈 百度技

Python爬虫利器四之PhantomJS的用法

前言 大家有没有发现之前我们写的爬虫都有一个共性,就是只能爬取单纯的html代码,如果页面是JS渲染的该怎么办呢?如果我们单纯去分析一个个后台的请求,手动去摸索JS渲染的到的一些结果,那简直没天理了.所以,我们需要有一些好用的工具来帮助我们像浏览器一样渲染JS处理的页面. 其中有一个比较常用的工具,那就是 PhantomJS Full web stack No browser required PhantomJS is a headless WebKit scriptable with a Ja

python --selenium+phantomjs爬取动态页面广告源码

背景:利用爬虫,爬取网站页面广告元素,监控爬取元素的数目,定时发送监控邮件 #!/usr/bin/env python2.7 # -*- coding: utf-8 -*- ''' @xiayun @[email protected] #爬取网站内容,利用phantomjs:IP代理+修改UA+动态页面执行JS ''' from selenium import webdriver from selenium.webdriver.common.desired_capabilities import