zoukankan      html  css  js  c++  java
  • 认识phantomjs

    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

  • 相关阅读:
    MongoDB 分片机制
    MongoDb的“not master and slaveok=false”错误及解决方法
    MongoDB 副本集复制配置
    spring,mybatis整合配置文件
    Tomcat-正统的类加载器架构
    CSS3系列三(与背景边框相关样式 、变形处理、动画效果)
    如果您想省略JS里的分号,了解一下JS的分号插入原理吧
    CSS3系列二(媒体支持、文字与字体相关样式、盒相关样式)
    CSS3系列一(概述、选择器、使用选择器插入内容)
    HTML5系列四(WebWorker、地理定位)
  • 原文地址:https://www.cnblogs.com/bhaltair/p/6859609.html
Copyright © 2011-2022 走看看