• 认识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

  • 相关阅读:
    GC垃圾回收算法
    Docker+nginx部署Springboot+vue前后端分离项目
    报错 ImportError: cannot import name 'AsyncContextManager'
    Python+Selenium定位不到元素(报错:selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element)
    淘宝网的发展史及其优缺点
    Python旅途——函数(1)
    正则表达式 -允许输入数字和小数点后两位
    表单的resetFileds函数重置为初始值而非清空数据
    做一个全局登录弹窗,任何地方访问
    浏览器到服务器的跨域问题
  • 原文地址:https://www.cnblogs.com/bhaltair/p/6859609.html
Copyright © 2020-2023  润新知