OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

从PhantomJS迁移到node-webkit:自动化测试框架简单比较


分享到
分类 心得体会   关键字 分享   发布 ourjs  1417227095450
注意 转载须保留原文链接,译文链接,作者译者等信息。  
注* PhantomJS 和 node-webkit 是基于Webkit实现的一套跨平台桌面程序应用的解决方案,PhantomJS此前多用于自动化测试方面。Node-Webkit是由Intel公司开源技术中心的王文睿(Rogerwang)发起的一个开源项目,此项目将node与webkit进行了融合。

我的网站有一些兼容性测试组件;从不同的网页截图然后同期望的图片进行对比。

https://github.com/twolfson/twolfson.com/tree/3.40.0/test/perceptual-tests/expected_screenshots

这个周末,我从PhantomJS 迁移到了node-webkit,我很高兴做成了这件事。




好的方面


  • node_modules/ 下的模块仍然可以使用 (比如没有 process 是 undefined 的问题)
  • node_modules/ 可以自动通过require获取

不好的方面


  • node-webkit 的启动时间较长
  • 需要定义index.html和package.json去加载node友好的上下文。
             这一点可以通过封装一层脚本来解决。(比如为它创建一个node的模块)


一些坑


  • 这里有一些并发的问题,如果同一时间截两张图就需要手动kill掉这个进程。
             否则你偶尔会看到一些白色的截图
  • node-webkit@0.10.5会偶尔在链接下面出现下划现。实际上不应该出现的。
            升级到node-webkit@0.11.1就可以了
  • 需要使用Xvfb去扩大桌面载图的尺寸(比如2000的高在1080的分辨率下)
  • 需要使用 Vagrant 去匹配 Travis CI 渲染

为什么不用atom-shell?


我刚开始用的是atom-shell。但是最近的版本在截图上有BUG(0.19.3)

https://github.com/atom/atom-shell/issues/847

最新可以捕捉屏幕截图的版本(0.17.2)缺少一个机制,从网站读取数据时node-integration被禁用。这将无法保证该网站是否尽可能准确。

为什么不用Selenium?


Selenium也许是目前截图最精确的。然而它的配置,安装和维护都没有node-webkit容易。

更外,我希望尽早验证node-webkit是不是PhantomJS脚本的一个很好的替代者。



注* node-webkit 与 atom-shell 都是基于 node.js 和 Chromium 实现的一种使用Web技术实现桌面程序的解决方案,他们有哪些不同呢?以下译自: Technical differences to Node-Webkit

1. 应用入口
node-webkit的入口是一个网页,而atom-shell的入口是一个JS脚本,这一点跟phantomjs比较像。

2. 编绎流程
Atom-shell使用 libchromiumcontent 访问Chromium的上下文API,而无需编绎整个Chromium项目,较低配置的机器就可以完成编绎。

3. Node集成
在Node-Webkit中需要修改Chromium的源代码完成集成(注* 比如在一次访谈中
Rogerwang曾经提到,node-webkit将node和Chromium的EventLoop进行了合并),而atom-shell将使用了不同的集成方式(参见第四条),从而避免对chromium的源代码进行修改。

4. 多个上下文
如果你是Node-Webkit用户,你可能知道Node Context(上下文)和Web Context,
通过 multi-context, atom-shell没有在网页中引入新的JavaScript 上下文。

注* atom-shell 是由github开发的,在github是一家比较有影响力的开源公司,node社区应github的要求在v0.12版本中加入了这个特性(尚未发布,参见: multi-context)。类似在一个事件循环中实现多个线程? 但这也不可避免地将node.js变得复杂了一些。

原文地址: 点此
社区评论 ( Beta版 )
  • #0 强仙扎 1418102186299

    加粗文本![强调文本][1]

  • #1 常刚右 1452741194212

    。。。。。。。。。。。。。。。。。。。

  • #2 涂至句 1492136589213

    强调文本在这里输入代码加粗文本

    引用 引用在这里输入代码

  • #3 涂至句 1492136643080

    强调文本*强调文本*

  • #4 沈权丙 1492858600370
    在这里输入代码***强调文本***
    
  • #5 范在勿 1497570111863

    Gf

OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. NodeJS会是昙花一现吗?
  2. NodeJS就是癌症[2011]
  3. JavaScript的设计缺陷?浮点运算:0.1 + 0.2 != 0.3
  4. Debug调试Node.JS:我们是如何定位内存泄漏和无限循环的
  5. Go语言实例教程基础语法篇(一)
  6. 提高NodeJS网站的安全性:Web服务器防黑客攻击技巧
  7. 理解JavaScript中的事件路由冒泡过程及委托代理机制
  8. SpiderMonkey的JavaScript引擎[Firefox]性能超越V8[Chrome]
  9. 什么是IndexedDB:Web离线数据库入门简介及基础教程
  10. 基于HTML5和JavaScript实现的Winamp MP3播放器
  11. AirJD-简单好用的免费建站工具

 相关阅读 - 心得体会
  1. 保卫AngularJS
  2. Angular.JS出了什么问题?
  3. 我们不需要JavaScript框架
  4. 各大邮件群发/订阅代理服务商比较
  5. 使用Node编写的Sublime代码格式化工具插件(HTML/CSS/JS)
  6. CTO这点事
  7. Bootstrap vs Foundation如何选择靠谱前端框架
  8. CSS垂直水平完全居中手册
  9. 避免误用 Redis
  10. CSS的力量:用一个DIV画图

 关键字 - 分享
  1. 企业开发小程序的过程中,这些方面必须重视!
  2. 企业开发微信小程序的过程中,最容易出现这些问题!
  3. 微商城想快速发展,软文营销工作必须做好!
  4. LEADTOOLS v19试用版安装指南图文详解
  5. Xamarin for Visual Studio v4.6发布,重新设计属性页和Manifest编辑器
  6. 开发小程序之前,这些问题必须考虑清楚!
  7. 微信小程序的出现,带给传统企业的优势!
  8. 微分销系统要提升,这些方面是重点!
  9. .Net文档图像处理工具包GdPicture.NET发布v14,提供最先进的PDF和文档成像技术
  10. Zend Studio使用教程:使用jQuery支持进行开发(一)

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号