当前位置: 首页 > news >正文

sikuli

基本简介

MIT的研究人员设计了一种新颖的图形脚本语言Sikuli,计算机用户只须有最基本的编程技能(比如会写print"hello world"),他不需要去写出一行行代码,而是用屏幕截图的方式,用截出来的图形元素组合出神奇的程序。

根据MIT研究人员的论文(PDF)描述,使用者只要对Python语言有基本的了解,Sikuli可以利用图形用户界面的截图元素自动的完成大多数编程任务。用研究人员的举的例子来说,就好像巴士正在转过街角,脚本能通知乘客,好让他及时赶上。

在上世纪80年代以前,要使用电脑软件需要记住大量的命令才完成相应的任务。但随后出现了GUI(图形用户界面),使用者只需要借助直观的按钮或其他视觉元素即可操作软件。但GUI的出现并没有给程序员带来便利,他们仍然需要借助代码来实现相应的功能。如果要让不同的软件相互配合,也同样要进行代码调用。

而麻省理工学院开发的Sikuli项目则可以使得这一过程变得更加简单,只需要略懂一点编程语言即可完成简单的编程和程序间的调用。利用 Sikuli,用户要使用其他的界面元素,或调用其他程序,不必输入代码,只需要插入相应的按钮或图标截图即可。

例如,当编程人员想要编写一个脚本,实现如下功能:当上班时所乘坐的公交车到达某一站时,自动向手机发送一条提示信息。如果是在以前,需要对相应的坐标进行确定,并通过文本的方式将其编写成代码。而如果在当地公交网站上有一个通过谷歌地图绘制的公交路线图,而且上面有活动的路标,那么编程人员便可将路标移动到需要发送短信的位置,并进行截图。这样一来,只需要将该截图插入到If之后,即可设定好条件语句,从而触发特定的信息。当然,这同样需要具备一些基本的编程基础。

当用户需要调用其他程序时也可以使用这一功能,例如,需要调用其他程序上的某个功能,则只需要将该功能所对应的按钮截图插入到代码中对应 的位置即可。

除了方便编程外,该技术还可以用于进行大规模的程序测试。例如,测试某一按钮是否正常工作。这时,通过Sikuli来调用待测试的按钮便可节约 大量时间。

此外,Sikuli还可用于可视化搜索。例如,对生活中的某一事物拍摄照片,即可搜索相关的信息;或是在某一地区迷路,只要将周围环境的照片上 传到搜索引擎,便可得到相应的地理位置。谷歌此前推出的Goggles也具备了类似的功能。

据麻省理工学院的研究人员介绍,Sikuli的工作模式与人眼一样,直接识别图像,而不是底层代码,因此不会产生不兼容的问题。 Sikuli在墨西哥维乔印第安人(Huichol Indians)的语言里是上帝之眼的意思。

这个项目的主创人员之一是来自台湾的张琮翔,他也是著名的技术博客系列追求神乎其技的程序设计之道的作者。

工作原理

工作原理图如下:

工作原理图

以python为基础,需要搭建Java运行环境。

相关特点

优点:

1.与平台无关

可以实现任意类型的UI(GUI)测试,轻松实现跨平台测试,并可以解决web测试中的浏览器兼容性测试问题。

2.可读性强

代码可读性强,用图形表示逻辑关系更生动、形象,容易理解,便于维护。

3.提供.jar包

便于构建大型的测试框架,实现各类测试工具之间的互补。

4.用例设计与程序实施可分离

用例设计人员可以只关注图型逻辑关系和测试检查点,不需要懂得具体开发与程序语言基础;程序实施人员可以只进行编程而不过多参与设计。

项目进展

目前最新发布的版本为:1.0rc3

 

相关文章:

  • OCR-光学符号识别
  • HTML DOCTYPE 声明
  • 图像四种基本类型简介
  • 常见图像格式清晰度对比
  • netsh命令
  • 系统检测到在一个调用中尝试使用指针参数时的无效指针地址
  • 微软带头打了30年,这场屏幕里的大乱斗,终于要结束了
  • 使用socket函数的一些常见错误
  • 数据链路层协议(Ethernet、IEEE802.3、PPP、HDLC)
  • IP协议详解
  • TCP协议
  • 浅谈 Excel 对象模型
  • WINMM
  • ACM-音频编解码器管理器
  • WDM驱动
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • @angular/forms 源码解析之双向绑定
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • Android 架构优化~MVP 架构改造
  • android 一些 utils
  • ECMAScript6(0):ES6简明参考手册
  • java8 Stream Pipelines 浅析
  • Javascript Math对象和Date对象常用方法详解
  • JavaScript 奇技淫巧
  • jquery ajax学习笔记
  • Linux下的乱码问题
  • php ci框架整合银盛支付
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • Webpack 4x 之路 ( 四 )
  • 成为一名优秀的Developer的书单
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 给初学者:JavaScript 中数组操作注意点
  • 关于Flux,Vuex,Redux的思考
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 在Mac OS X上安装 Ruby运行环境
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #Linux(帮助手册)
  • #Z0458. 树的中心2
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (JS基础)String 类型
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (生成器)yield与(迭代器)generator
  • (四)库存超卖案例实战——优化redis分布式锁
  • .bashrc在哪里,alias妙用
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .project文件
  • 。Net下Windows服务程序开发疑惑
  • /etc/shadow字段详解
  • @Bean注解详解