




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Sikuli调研分享,李俊薇,索引,1、简介2、下载和安装3、示例4、疑问5、在java程序中使用sikuli6、优缺点7、技巧和附录,简介,Sikuli(在墨西哥维乔印第安人的语言里是”上帝之眼”的意思)是由美国麻省理工学院开发的一种最新编程技术,使得编程人员可以使用截图替代代码,从而简化代码的编写流程。从它研究方向上看,是一种编程技术,但是该技术还可以用于进行大规模的程序测试,脚本程序编写使用的是python语言。编程而非录制一般的工具是录制脚本,而sikuli不存在录制的问题,它需要自己手动编写程序来完成测试。资料来源:,Sikuli脚本示例图(创建新账户的一个流程),如果存在创建账户按钮入口则点击该按钮入口否则点击菜单“邮箱”点击“新建邮箱账户”选项点击输入邮箱地址编辑区输入邮箱地址点击输入密码编辑区输入密码点击下一步点击创建。,下载和安装,下载:/uid/sikuli/(最新版本是0.10.1)安装(要有java环境)启动直接使用安装目录下的Sikuli-IDE.exe启动。使用过程中,遇到过直接用exe启动后可能无法正常使用的现象(在vista和win7下面遇到过,可能某些包无法加载,具体原因不知),网上开发人员的建议是使用安装目录下的Sikuli-IDE.bat,双击后也会启动sikuli的IDE界面,然后可以正常使用。使用详细资料参考地址(全英文):/trac/wiki/reference-0.10#Howtousethisdocument,主界面,程序保存,编写完程序后,用saveas保存,会生成一个.sikuli的文件夹。,其中:.py是phthon脚本.png是编写脚本过程中执行的截图.html能让脚本在网络上实现共享,注意:此处程序本身好像有bug,保存路径不能含有中文字符,否则会报错,几个例子函数,1、click(对象截图)点击某个对象2、type(可输入对象截图,字符串)像某个可输入对象输入字符串3、rightClick(对象截图)在某个对象上点击右键4、快捷键ctrl+shift+2启动抓图,右键取消5、wait(时间s)等待多少s,一个例子程序,用例:闪电邮中创建一个用户名和密码均正确的账户流程:找到创建入口,点击输入用户名和密码,点击下一步选择账户模式,点下一步,点创建按钮等待同步通讯录和收信完成检查是否创建成功(判断依据是左边账户列表是否有该账户),Sikuli程序,account=ljw200901tpsw=ljwtestifexists(1280742360468.png):click(1280742415811.png)else:click(1280742437779.png)click(1280742453232.png)click(1280742480700.png)type(account)click(1280742506294.png)type(psw)click(1280742536496.png)click(1280742556137.png)waitVanish(1280742859224.png)ifexists(1280742904208.png,5):click(1280742940020.png)waitVanish(1280742955019.png)waitVanish(1280743004706.png,20)ifexists(1280743048736.png)andexists(1280743102282.png):print(theaccountiscreateok!),保存后的.py程序脚本,疑问:靠图像识别可靠吗?,靠图像来对对象进行识别,必然有很多不足之处,但是sikuli里面提供了similarity的调整,在一定程度上弥补了这个缺点(但也不是绝对的)实际调研情况:脚本01是在xp下录制的一段脚本,调整相似度和识别对象个数后,在默认、国风、虎年三套皮肤下均可运行通过。增加wait()等待后,在vista下的默认、国风、虎年三套皮肤下也可以使用。酷黑皮肤差异较大,无法识别。需要研究的是:1、相似度调整到多少比较合适2、识别对象个数调整到多少比较合适3、等待时间设置为多少比较合适,相似度非常小的时候能匹配出较多对象,注意颜色(红色表示最匹配的),相似度调高一些的时候能匹配个数减少,相似度较高时匹配出最相似(想要的)对象,疑问:如何知道我点击的是哪里?,在java程序中也可以使用sikuli,Sikuliscript的核心是用java编写的,所以在java代码中可以引用sikuliscript包然后编写自己的测试程序。,继续查看如何在java程序中使用,跳过,看sikuli优缺点,Java中使用sikuli-script的步骤,1、获取sikuli-script.jar在sikuli的安装目录下面有一个sikuli-script.jar包。2、安装OpenCVSikuliscript使用OpenCV作为图形识别引擎。如果是windows系统,可以直接配置环境变量,在path路径中加入“sikuli安装路径/tmplib”,windows系统能自动的找到OpenCV的dll。在mac和linux下比较复杂,需要自己安装OpenCV(没有研究),Java中使用sikuli-script的步骤,3、在java项目中引入sikuli-script包在eclipse中新建一个java项目,然后引入4.1中获取的sikuli-script.jar包。项目建立成功后,可以在项目目录中看到这个包。,Java中使用sikuli-script的步骤,4、引用引入的包在自己的程序中引入需要的sikuliclasses,用“importedu.mit.csail.uid.*”,或者引入一些自己需要的类,可能会用到一些Regin、Screen、SikuliScript类。5、程序编写,importedu.mit.csail.uid.*;importedu.mit.csail.uid.Win32Util;publicclassTestSikulipublicstaticvoidmain(Stringargs)Screens=newScreen(100);Win32Utilapp=newWin32Util();/启动程序需要用到此类intopenapp=app.openApp(D:ProgramFilesNetease网易闪电邮Start.exe);/(小bug)此句不能正确执行,貌似对含有汉字的路径支持不好intopenapp=app.openApp(D:ProgramFileseMuleemule.exe);/此句可以正常执行,需要全英文字符的路径if(openapp=0)System.out.print(appstartsok!);elseSystem.out.print(appstartsfailed!);trys.click(img/02.png,0);/点击增加账户的加号按钮s.click(img/05.png,0);/点击输入用户名的编辑框s.type(null,ljw200901t,0);/输入用户名s.click(img/06.png,0);/点击输入密码的编辑框s.type(null,ljwtest,0);/输入密码/trycatch(Exceptione)e.printStackTrace();/catch以上的.png图片都是保存在项目工程的img下的图片(可以用sikuli截取的图复制过去,然后自己可重命名),优点,1、整体上sikuli小巧、便捷、容易上手。2、sikuli脚本可以不经过API的编译器直接自动化搜索到任何你能在屏幕上看到的东西3、对各种程序都适合4、不存在标准控件和非标准控件的问题5、相对位置概念较小,要求不高(但是对象本身尺寸有影响)6、一次编码,多次运行(基于java的)7、jython和java的支持,用编程的方式比较容易扩展,缺点,1、图片的分辨率、色彩、尺寸、唯一性对程序的影响(如果有两个相同的,无法区分具体哪一个)2、sikuli本身还不完善(处于开发、升级阶段)还有很多程序bug,能否继续发展还是未知数3、只认识当前活动的图标(只有当前桌面有才行)4、用例组织方面有提供但是目前有bug,还未调研尝试便利性5、截图的话,脚本存储占用空间较大6、相似度调整需要手动一个个的调整,工作量大7、ljw200901t和ljw200902t的区别(不太容易区别出来,可能需要调整到similarity=1.0才行,但这样的话可移植性就差了)8、目前还不适合设计成一种测试框架(有用例组织功能,但是目前有bug,暂时没有用过)9、测试报告的生成,直接用message的话比较弱,需要用jython编程实现可能会强大一些(还未调研),增加图片识别时间,wait()的使用新建一个自定义邮件夹后输入“test”,有wait()后,才能正常表现。程序代码:,程序移植点击查看原始代码01在xp下写的一个脚本,移植到vista下后,设置的皮肤都一样,但是可能会抛出无法识别图像的异常,某些时候可能是因为等待时间不够久,程序来不及识别,可以用wait()增加程序查找对象的时间。代码01是在xp下录制的一段脚本,闪电邮的默认、国风、虎年三套皮肤均能够正常运行。移植到vista下的默认皮肤下后,抛出一些无法识别图像的异常,但是在每个动作后增加了wait(1)等待1秒后,脚本可以正常执行了。(等待时间可根据实际情况自由设定)个人感觉应该是移植到vista下后,某些图片属性需要时间识别确认,如果没有等待时间,可能没有足够时间识别。,附录参考资料,Sikuli官方网站/uid/sikuli/Sikuli详细的documentation/trac/wiki/reference-0.10#HowtousethisdocumentPython学习地址(英文):,Sikuli的系统设计架构,参考地址:/documentation.shtml#/trac/wiki/SystemDesign,其他示例,1、获取popo表情和动漫表情增加wait()等待时间后,能判断到图片是否存在。疑问:是否是根据某个时间内判断到的某一帧来识别的?不确定Wait(2)程序运行结果,弹出“didnot
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 有限责任公司股东合作协议模板
- 水杯外观标准培训
- 心衰的护理新进展
- 怎样做讲课课件
- 电焊中级培训
- 多功能电动护理床
- 护理创新项目比赛
- 《做个家庭小主人》
- 中国旗袍培训
- 车间班组年度工作总结
- 廉洁行医专题培训课件
- 南通市如东县医疗卫生单位招聘事业编制工作人员笔试真题2024
- 历史●甘肃卷丨2024年甘肃省普通高中学业水平等级性考试高考历史真题试卷及答案
- 2024年杭州市临安区事业单位统一招聘真题
- C语言程序设计基础知到智慧树期末考试答案题库2025年石河子大学
- 党建考试试题及答案国企
- 小学图书馆面试题及答案
- 客运行业事故隐患内部报告奖励管理制度2025
- 快消品包装2025年可再生资源利用现状与前景报告
- 纵隔肿物护理
- 房屋建筑与市政工程重大事故安全隐患判定标准解读课件
评论
0/150
提交评论