在我看来,实现UI自动化测试的过程一向都是令人快乐的事情,而维护它们就是跟噩梦一样了,尤其是对每次CI产生的build进行BVT测试,由于开发不会告诉你任何UI的变化,那么你拿到的测试结果就势必会一片红了。但是对于界面相对稳定的项目,有大量回归测试需要进行的项目,实现UI自动化的投资回报率还是很高的。

最近我实现了公司一个产品在Mac OSX上的UI自动化测试,下面就把具体的细节写出来。

首先,选用的是由 MIT 研究团队发布的图形化编程技术 Sikuli,它以图像检索为基础,提供了一套基于 Jython 的脚本语言以及集成开发环境,使用者可利用屏幕截图直接引用 GUI 元素进行编程,完成交互操作。

所有的按钮操作和拖动操作都是用Sikuli来完成的,而像窗口的相关操作,比如非全屏最大化,控制Finder定位到一个路径等等操作都是用AppleScript实现的,因为用图像识别去操作一些很小的或者是与周围图像没有明显区别的控件时,使用Sikuli还是不稳定的。

Sikuli不光提供了类库,还提供了一个IDE, 当然其功能很简单,而且经常crash,所以建议还是能不用就不用它吧。

还有就是由于Sikuli提供的是一套java包,然后再使用Jython进行包装,让其语言更加简单,但是这就有可能导致你想用的python库不能与jython兼容。

环境准备:

1. 安装Java SDK

2. 下载Sikuli, 访问官网下载jar包即可

3. 安装Sikuli, 双击'sikulixsetup-1.1.0.jar', 勾选1, 2即可 (Sikuli的安装界面,左右一个开源项目来说,已经是很出色了)

4. 安装过后,会生成一个app文件,建议将其拖到Application中吧:

5. 最后执行SikuliX.app即可

到此,安装就结束了,打开即可开到Sikuli的IDE了:

可以使用它方便进行截图和调整图片的匹配度。

6. 由于使用的是图像识别,所以最好在开发和运行阶段都将OSX的透明度关掉,以免干扰图像识别的准确度。

在System Preferences中关掉透明:

7. 将需要用到的app加入到“Security & Privacy”的“Accessibility”中:

到此,环境准备的差不多了,当然如果需要用到python的相关模块, 可以安装get-pip.py,之后执行install命令了:

  sudo pip install [module name]

Mac下的UI自动化测试 (一)的更多相关文章

  1. Mac下的UI自动化测试 (三)

    使用sikuli进行UI自动化测试固然是方便很多,不用一切都使用AppleScript那烦人的语法,只要界面的UI没有变化,结构的变化不会影响到基于sikuli的自动化,但是基于AppleScript ...

  2. Mac下的UI自动化测试 (二)

    下面讲一下Sikuli的重要概念,就是region,所谓region就是Sikuli在进行图像识别的时候的一个区域,默认是整个屏幕. 当然,如果region选得太大的话,并且UI上存在相似的控件,那么 ...

  3. Mac下的UI自动化测试 (四)

    在实际写testcase的时候会使用unittest框架,但是在sikuli中需要使用它提供的command来运行,位于/Applications/SikuliX.app/run,使用-r参数指定要运 ...

  4. 使用phantomjs进行无界面UI自动化测试

    PhantomJS(http://phantomjs.org/) 是一个基于WebKit的服务器端JavaScript API.它全面支持web而不需浏览器支持,其快速.原生支持各种Web标准:DOM ...

  5. [原创]浅谈Web UI自动化测试

    [原创]浅谈Web UI自动化测试 Web UI自动化测试相信大家都不陌生,今天来谈谈这个,我最早接触自动化测试时大约是在2004年,2006年当时在腾讯财付通算是开始正式接触自动化测试,之所以是正式 ...

  6. Jenkins下构建UI自动化之初体验

    一.缘 起 笔者之前一直在Windows环境下编写UI自动化测试脚本,近日在看<京东系统质量保障技术实战>一书中,萌生出在jenkins下构建UI自动化测试的想法 二.思 路 首先,在Li ...

  7. RF+Appium框架自动化测试系列一之(Mac下Appium环境搭建)万事开头难

    消失了3个月,有一段时间没来园子更新博客了,各位看官见谅哈哈,消失是因为刚换了工作环境没外网,好多笔记没能及时的记录分享,以后有时间慢慢补上吧,这段时间主要接触了移动端app的自动化测试,公司为了快速 ...

  8. MAC下搭建appium UI自动化环境

    参考资料: http://qa.blog.163.com/blog/static/190147002201510161119832/ http://blog.csdn.net/liuchunming0 ...

  9. appium+python 【Mac】UI自动化测试封装框架流程简介 <一>

    为了多人之间更方便的协作,那么框架本身的结构和编写方式将变得很重要,因此每个团队都有适合自己的框架.如下本人对APP的UI自动化测试的框架进行进行了简单的汇总.主要目的是为了让团队中的其余人员接手写脚 ...

随机推荐

  1. 如何重启mysql服务

    window下: 在cmd中,键入services.msc,找到mysql,右键重启mysql

  2. unitychan-crs 头发随动脚本

    // //SpringCollider for unity-chan! // //Original Script is here: //ricopin / SpringCollider.cs //Ro ...

  3. 横向排列两个多个div盒子的方法(CSS浮动清除float-clear/inline)/办法

    最近在做一个div css切割,昨晚发现了长期以来一直无记录下来的问题!关于兼容IE跟FF的float属性.趁现在还清醒赶紧记下笔记先:一.并排在一行的两个div样式有这种情况:ie或者ff下对于子d ...

  4. docker容器升级脚本

    #!/bin/bash # Let's finish it like a flash # usage:sh -x update_cms_backend.sh -v 2018050401 ARGS=`g ...

  5. es6字符串的扩展学习笔记

    1. 传统上,JavaScript只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中.ES6又提供了三种新方法. includes():返回布尔值,表示是否找到了参数字符串. st ...

  6. 把python2.6升级到python2.7(同样适用于把python2升级到python3)

    在启用https过程中,在生成CSR(证书请求文件)时,报错了,说python2.6已被python团队抛弃了,所以升级python到2.7 话不多说,直接上代码: 步骤1:下载python2.7.1 ...

  7. c#学习之路---壁咚漏洞搜索

    每次出漏洞都会用JAVA去写,不过JAVA你懂得,写GUI每次画图很吃力. 于是左右学习了下c#,期间也得到表哥storm7kb的帮助,要不然这个表格与数据绑定不知道c#怎么弄. 上一下图吧: --- ...

  8. java selenium webdriver第二讲 页面元素定位

    自动化测试实施过程中,测试程序中常用的页面操作有三个步骤 1.定位网页上的页面元素,并存储到一个变量中 2.对变量中存储的页面元素进行操作,单击,下拉或者输入文字等 3.设定页面元素的操作值,比如,选 ...

  9. 第十二章 Jetty的工作原理解析(待续)

    Jetty的基本架构 Jetty的启动过程 接受请求 处理请求 与JBoss集成 与Tomcat的比较

  10. tar命令解压jdk.tar.gz包 报错 gzip: stdin: not in gzip format

    转自:https://blog.csdn.net/LL_zhuo/article/details/44173355 遇到和这篇博文一样的问题了.用wget 从oracle官网下载jdk, http:/ ...