




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Sikuli调研分享 李俊薇 索引 1、简介 2、下载和安装 3、示例 4、疑问 5、在 java程序中使用 sikuli 6、优缺点 7、技巧和附录 简介 Sikuli(在墨西哥维乔印第安人的语言里是 ”上帝之眼 ”的意 思)是由美国麻省理工学院开发的一种最新编程技术,使 得编程人员可以使用截图替代代码,从而简化代码的编写 流程。从它研究方向上看,是一种编程技术,但是该技术 还可以用于进行大规模的程序测试, 脚本程序 编写使用的 是 python语言 。 编程而非录制 一般的工具是录制脚本,而 sikuli不存在录制的问题,它 需要自己手动编写程序来完成测试。 资料来源 : /news/2010/0121/1426963046.shtml Sikuli脚本 示例图(创建新账户的一个流程) 如果存在创建账户按钮入口 则点击该按钮入口 否则 点击菜单 “邮箱 ” 点击 “新建邮箱账户 ”选项 点击输入邮箱地址编辑区 输入邮箱地址 点击输入密码编辑区 输入密码 点击下一步 点击创建 。 下载和安装 下载 : /uid/sikuli/ (最新版本是 0.10.1) 安装(要有 java环境) 启动 直接使用安装目录下的 Sikuli-IDE.exe启动。 使用过程中,遇到过直接用 exe启动后可能无法正常使用的现象(在 vista和 win7下面遇 到过,可能某些包无法加载 ,具体原因不知 ),网上开发人员的建议是使用安装目录 下的 Sikuli-IDE.bat,双击后也会启动 sikuli的 IDE界面,然后可以正常使用。 使用 详细资料参考地址(全英文): /trac/wiki/reference-0.10#Howtousethisdocument 主界面 程序保存 编写完程序后,用 save as保存,会生成一 个 .sikuli的文件夹。 其中 : .py是 phthon脚本 .png是编写脚本过程中执行的截图 .html能让脚本在网络上实现共享 注意:此处程序本身好像 有 bug,保存路径不能含 有中文字符,否则会报错 几个例子函数 1、 click(对象截图) 点击某个对象 2、 type(可输入对象截图,字符串) 像某个可输入对象输入字符串 3、 rightClick(对象截图) 在某个对象上点击右键 4、快捷键 ctrl+shift+2启动抓图,右键取消 5、 wait(时间 s) 等待多少 s 一个例子程序 用例 : 闪电邮中创建一个用户名和密码均正确的账户 流程 : 找到创建入口,点击 输入用户名和密码,点击下一步 选择账户模式,点下一步,点创建按钮 等待同步通讯录和收信完成 检查是否创建成功(判断依据是左边账户列表是否有该账户) Sikuli程序 account=““ psw=“ljwtest“ if exists(“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“) if exists(“1280742904208.png“,5): click(“1280742940020.png“) waitVanish(“1280742955019.png“) waitVanish(“1280743004706.png“,20) if exists(“1280743048736.png“) and exists(“1280743102282.png“): print(“the account is create ok!“) 保存后的 .py程序脚本 疑问:靠图像识别可靠吗? 靠图像来对对象进行识别,必然有很多不足之处,但是 sikuli里面提 供了 similarity的调整,在一定程度上弥补了这个缺点(但也不是绝对的 ) 实际调研情况: 脚本 01是在 xp下录制的一段脚本,调整相似度和识别对象个数后,在 默认、国风、虎年三套皮肤下均可运行通过。增加 wait()等待后, 在 vista下的默认、国风、虎年三套皮肤下也可以使用。酷黑皮肤差异 较大,无法识别。 需要研究的是: 1、相似度调整到多少比较合适 2、识别对象个数调整到多少比较合适 3、等待时间设置为多少比较合适 相似度非常小的时候能匹配出较多对象,注意颜色(红色表示最匹配的 ) 相似度调高一些的时候能匹配个数减少 相似度较高时匹配出最相似(想要的)对象 疑问:如何知道我点击的是哪里? 在 java程序中也可以使用 sikuli Sikuli script的核心是用 java编写的,所以在 java代码中可 以引用 sikuli script包然后编写自己的测试程序。 继续查看如何在 java程序中使用 跳过,看 sikuli优缺点 Java中使用 sikuli-script的步骤 1、 获取 sikuli-script.jar 在 sikuli的安装目录下面有一个 sikuli-script.jar包。 2、 安装 OpenCV Sikuli script使用 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、 引用引入的包 在自己的程序中引入需要的 sikuli classes,用 “import edu.mit.csail.uid.* ”,或者引入一些自己 需要的类,可能会用到一些 Regin、 Screen、 SikuliScript类。 5、程序编写 1. import edu.mit.csail.uid.*; 2. import edu.mit.csail.uid.Win32Util; 3. public class TestSikuli 4. public static void main(String args) 5. Screen s=new Screen(100); 6. Win32Util app=new Win32Util();/启动程序需要用到此类 7. int openapp=app.openApp(“D:Program FilesNetease网易闪电邮 Start.exe“); 8. /(小 bug) 此句不能正确执行,貌似对含有汉字的路径支持不好 9. int openapp=app.openApp(“D:Program FileseMuleemule.exe“); 10. /此句可以正常执行,需要全英文字符的路径 11. if(openapp=0) 12. System.out.print(“app starts ok!“); 13. else 14. 15. System.out.print(“app starts failed!“); 16. 17. try 18. s.click(“img/02.png“, 0);/点击增加账户的加号按钮 19. s.click(“img/05.png“, 0);/点击输入用户名的编辑框 20. s.type(null,““,0);/输入用户名 21. s.click(“img/06.png“, 0);/点击输入密码的编辑框 22. s.type(null,“ljwtest“,0); /输入密码 23. /try 24. catch(Exception e) 25. e.printStackTrace(); 26. /catch 27. 28. 以上的 .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#Howtousethisdocument Python学习地址(英文): /jythonbook/en/1.0/ 更多 sikuli类、 函数使用可以参考 java doc /documentation.shtml#/trac/wiki/How%20to%20use%20Sikuli%20Script% 20in%20your%20JAVA%20programs? (如果要在 java program中使用,就要详细看这个 java doc文档了) Sikuli的系统设计架构 参考地址: /documentation.shtml#/trac/wiki/SystemDesign 其他示例 1、获取 popo表情和动漫表情 增加 wait()等待时间后,能判断到图片是否存在。 疑问:是否是根据某个时间内判断到的某一帧来 识别的?不确定 Wait( 2) 程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 核子仪考试题及答案
- 郑州校园探访活动方案
- 贵州转学考试题及答案
- 钢琴乐理考试题及答案
- 农民合作社农业信贷支持协议
- 氟骨病考试题及答案
- 提升生态合作保障承诺书5篇
- 专业人士行业担当承诺书6篇
- 用户反馈信息分类表格
- 方向辨认考试题及答案
- 2025-2030年中国象棋行业发展分析及前景趋势与投资风险研究报告
- 抖音员工合同协议书模板
- 《王戎不取道旁李》教案
- 专项安全施工方案监理
- 股东出资协议书合同
- GB/T 27060-2025合格评定良好实践指南
- DB45∕T 2789-2023 壮医药线点灸治疗护理技术操作规范
- 分子诊断技术在感染性疾病中的应用-深度研究
- 行测5000题电子版2025
- 《规训与惩罚》课件
- 【MOOC】声乐作品赏析与演唱-扬州大学 中国大学慕课MOOC答案
评论
0/150
提交评论