SikuliX 实战

news2024/12/23 9:26:52

一. SikuliX是什么

SikuliX的前身是 Sikuli。Sikuli是由MIT(麻省理工学院)研究团队发布的一种基于OpenCV图像识别技术的自动化工具软件。
Sikuli 是2009 年由在麻省理工学院用户界面设计小组作为一个开源研究项目,负责人分别是Tsung-Hsiang Chang 和 Tom Yeh。两人在 2012 年离开了 Sikuli-X-1.0rc3 的项目。后续由RaiMan接管开发和支持至今,并将其命名为 SikuliX。
SikuliX可对人眼能看到的任意应用软件界面进行自动控制,以实现各种软件操作步骤的自动化。软件界面可以是Windows、Mac或则Linux/Unix系统上的任何可见内容。
提供了SikuliX IDE,用户可通过简单的脚本开发实现屏幕上人眼可见的任何图形界面进行各种操作,如模拟操作鼠标点击、拖动,或则模拟键盘的输入
目前最新的稳定版本为 SikuliX 2.05,2.06版本即将发布。之前网络上对SikuliX介绍的都是1.0x版本。

二. SikuliX可能的使用场景

在日常学习工作中,你希望控制软件自动的执行重复性的任务
在玩游戏时,你想要自动化某些重复的操作
在 IT 运维中,你希望自动化管理任务开发
在软件自动测试中,被测软件的组件不能准确识别时,可以使用SikuliX
定时抢购什么优惠的物品,还有其他更多的使用场景期待你的发现... ...

三. SikuliX IDE安装

新版本的SikuliX安装极其简单并且容易上手,最新的稳定版本为 SikuliX 2.05。
笔者制作了一个绿色版安装包,下载解压后即可运行,无需其他配置。
提别提醒:请保存在”纯英文“的文件路径下,例如:d:\MyLearning
​下载链接:https://pan.baidu.com/s/1dQ4R-SgHKRSmVTFaziP9Xg?pwd=dupd 提取码:dupd

2. 解压缩文件后如图1,双击文件“RunSikuli2.05.bat”即可,如图2为SikuliX IDE-2.05的界面。


图1 安装包解压后的文件目录

图2 SikuliX 2.05界面

四、入门示例1:Hello World

让我们从一个惯用的 Hello World 示例开始!

学习目标:在开始菜单搜索框中自动键入“Hello World”

学习内容:如何捕获 GUI 元素的屏幕截图并编写一个 Sikuli 脚本来实现:

单击屏幕上期望的按钮
在文本框中输入字符串:Hello World
如下图所示的为期望效果:


执行步骤:

1) 启动SikulixIDE等待IDE界面出现,可双击“RunSikuli2.05.bat”,。
2) 在代码区域输入:click(),并将光标移动到括号中间,如下图所示:
3) 点击SikulixIDE工具栏的第一个图标,进入截屏模式。

在截屏模式下,屏幕看起来会变暗并会暂时冻结。整个桌面就像一个画布,你可以在其中围绕要捕获图像的目标绘制一个矩形。红色虚线的十字表示您刚刚绘制的矩形的中心:

绘制一个矩形后,矩形内的图像将被捕获并插入到当前光标位置的脚本编辑器中:

此代码表示:使用此图像作为click函数的输入参数。

如是Win7系统选中,可选中Windows徽标:

4) 在代码区域输入:type(‘Hello world’),如下图所示:

5) 点击工具栏中间的“运行”,查看运行效果。

如出现保存脚本对话框,请选择合适的路径输入“HelloWorld”作为脚本名称保存。

6) 恭喜!您刚完成了第一个 Sikuli 脚本。体验一下点击“逐步运行”的效果,有小惊喜。

提醒:脚本运行后,SikuliIDE界面会隐藏;脚本完成执行SikulixIDE会再显示。

小结:SikuliX 脚本 (.sikuli) 是包含实现测试用例的 Python 源文件 (.py) 以及源文件使用的所有图像文件 (.png) 的文件夹。 Sikuli 脚本中使用的所有图像路径都默认是 .sikuli 包中 .png 文件的路径。
默认情况下,当在使用SikuliX IDE 保存时,SikuliX 脚本文件夹/目录与脚本同名。包含的脚本文件必须与文件夹同名。如图所示样例:

 type('a',Key.CTRL)  #先用ctrl+a选中
type(Key.DELETE)  #然后全部删除

wait(2)
type("JAVA\n")
wait(2)
type(Key.BACKSPACE) #一次删除一个字符

capture(0,0,600,600) 四个参数分别是  截图的起始位置x,y, 图片的长度和宽度

Sikulix的脚本用法详情参考官方文档

 

键盘基本操作:
http://www.manongjc.com/detail/39-yybxvkqkhesdnme.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/686664.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

42 # 前端 blob 类型

前端的二进制 文件类型 Blob&#xff1a;二进制文件类型input 的 typefile&#xff1a;file 类型&#xff0c;继承于 Blob 前端实现下载功能 实现下载字符串到文件里&#xff0c;需要将字符串包装成二进制类型 <!DOCTYPE html> <html lang"en"><h…

文字对话如何配音?安利你三款制作对话配音的软件

对话配音怎么配&#xff1f;安利三个好用的对话配音软件给你 一分钟告诉你对话配音怎么配 对话配音怎么配&#xff1f;超简单的对话配音制作教程来啦 对话配音软件有哪些&#xff1f;给你安利这三款对话配音软件 对话配音如何操作&#xff1f;分享你三个对话配音小技巧 在电…

想学PMP,有考过的同学给个建议嘛?

PMP中国和国外的考试形式略有不同&#xff0c;这里只介绍一下PMP中国考试的相关信息。 1.PMP考试相关信息 考试形式&#xff1a;笔试 考试时间&#xff1a;230分钟&#xff08;3小时50分钟&#xff09;&#xff0c;一般考试时间在上午9:00~12:50&#xff0c;也会因为特殊情况…

C++primer(第五版)第二章(变量和基本类型)

2.1基本内置类型 2.1.1算术类型 C的基本内置类型包括算数类型和空类型,空类型就是void,算术类型我从原书中截下来放在下面: 从上表我们可以得知C规定int至少和short一样大,long至少和int一样大,longlong至少和long一样大. 其中char(字符)类型支持国际化,所以char会确保可以放…

学Java还是学Android?如何选择?

学Java和学Android都有其各自的好处和应用场景。下面是一些关于学习Java和学习Android的信息&#xff0c;以帮助你做出选择&#xff1a;刚好我这里有嵌入式、plc、单片机的资料需要的在评论区扣6或私我 学习Java&#xff1a; Java是一种通用的编程语言&#xff0c;广泛应用于服…

Simulink自动把所有的double数据转换成single数据

目录 前言 子系统double自动转single操作步骤 总结 前言 在基于模型的开发建模中&#xff0c;模块大多默认的数据类型是double&#xff0c;很多MCU支持的是单精度的浮点&#xff0c;生成代码的部分需要把double转成single数据类型&#xff0c;当然在建模的时候可以配置每一…

GCP学习笔记(三)——存储和安全

文章目录 一、Cloud Storage二、Cloud Bigtable三、Cloud SQL四、Cloud Spanner五、Firestore六、Cloud Datastore七、安全1. Data Loss Prevention2. Stackdriver3. IAM 八、网络概述 在GCP中&#xff0c;我们需要序列化数据使数据能够进行存储和转换。Avro时一种数据序列化方…

清华唐杰新作WebGLM,参数100亿可联网

WebGLM是一个基于大语言模型&#xff08;LLM&#xff09;的联网问答聊天机器人&#xff0c;它的作者是清华大学计算机系唐杰教授团队&#xff0c;它的论文入选了KDD2023会议。 WebGLM的特点是它可以利用Web搜索和检索功能来增强LLM的能力和泛化性&#xff0c;从而实现一个高效、…

智驾产品价值逻辑变了,新一代智驾芯片的核心要求

“根据创新扩散理论&#xff0c;智能汽车的早期用户主要是‘发烧友’&#xff0c;但是真正起量需要依靠‘大众群体’。要想抓住智能驾驶普及的黄金增长机遇&#xff0c;必须捕捉到两个群体的差异化需求&#xff0c;理解行业规则的变化。在当下&#xff0c;智驾产品必须重视功能…

MySQL架构介绍

MySQL架构介绍 和其它数据库相比&#xff0c;MySQL有点与众不同&#xff0c;它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上&#xff0c;插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和…

【软考网络管理员】2023年软考网管初级常见知识考点(15)-网络管理与存储

涉及知识点 网络管理功能&#xff0c;网络管理模型&#xff0c;SNMP协议原理与版本&#xff0c;数据备份&#xff0c;DAS/NAS/SAN技术 软考网络管理员常考知识点&#xff0c;软考网络管理员网络安全&#xff0c;网络管理员考点汇总。 文章目录 涉及知识点一、网络管理功能二、…

容器访问外部网络之Linux ip_forward 数据包转发

文章目录 1 问题解决1.1 问题&#xff1a;1.2 原因&#xff1a;1.3 解决&#xff1a;临时打开&#xff1a;永久打开&#xff1a; 2 net.ipv4.ip_forward内核参数通俗解释3 在Linux中验证并实践net.ipv4.ip_forward设置 IP 地址设置路由信息打开 IP Forward 功能关闭主机 R 的防…

【LeetCode】动态规划 刷题训练(四)

文章目录 面试题 17.16. 按摩师(打家劫舍|)题目解析状态转移方程完整代码 213. 打家劫舍 II题目解析状态转移方程完整代码 740. 删除并获得点数题目解析预处理状态转移方程完整代码 面试题 17.16. 按摩师(打家劫舍|) 点击查看&#xff1a;按摩师 一个有名的按摩师会收到源源不…

【vue小知识】给DOM元素动态的添加上一个类||v-bind的妙用

&#x1f609;博主&#xff1a;初映CY的前说(前端领域) ,&#x1f4d2;本文核心&#xff1a;vue文件怎么给DOM元素加上一个类 项目场景&#xff1a; 在前端页面逻辑操作中通常是存在click事件,添加点击效果是为了让页面操作起来更加的有操作性与互动性,那么有什么方式可以实现…

13个有趣的Python高级脚本!

关注“Python专栏”微信公众号&#xff0c;回复暗号【面试大全】&#xff0c;立即领取面试题简历模板。 每天我们都会面临许多需要高级编码的编程挑战。你不能用简单的 Python 基本语法来解决这些问题。在本文中&#xff0c;我将分享 13 个高级 Python 脚本&#xff0c;它们可以…

IP路由选择过程

1.1路由选择基础 路由选择是指将分组从一个设备通过互联网络发往位于不同网络上的另一个设备的操作。路由器不关注网络中的主机&#xff0c;而只关注互联起来的网络以及通往各个网络的最佳路径。 目标主机的逻辑网络地址用来获取通过可路由网络传送到指定网络中的分组&#xf…

(一)CSharp-Socket

一、套接字 Windows Sockets 只支持一个通信域&#xff1a;网际域&#xff08;AF-INET&#xff09;&#xff0c;这个域被使用网际协议族通信的进程所使用。 TCP/IP 的 Socket 则提供3种类型的套接字 1、流式套接字&#xff08;SOCK_STREAM&#xff09; 提供面向连接、可靠的数…

STM32 Proteus仿真闹钟设定万年历系统DS1302北京时间LCD1602蜂鸣器报警-0045

STM32 Proteus仿真闹钟设定万年历系统DS1302北京时间LCD1602蜂鸣器报警-0045 Proteus仿真小实验&#xff1a; STM32 Proteus仿真闹钟设定万年历系统DS1302北京时间LCD1602蜂鸣器报警-0045 功能&#xff1a; Protues版本&#xff1a;8.9 硬件组成&#xff1a;STM32F103R6单…

gif格式怎么转换成mp4? 这两个方法实用方便!

GIF&#xff08;Graphics Interchange Format&#xff09;文件是一种常见的动态图像格式&#xff0c;而MP4&#xff08;MPEG-4 Part 14&#xff09;则是一种流行的视频文件格式。有时候&#xff0c;您可能想要将GIF文件转换为MP4格式&#xff0c;以便在不同的平台和设备上进行更…

6-js基础-5

JavaScript 基础 - 5 知道对象数据类型的特征&#xff0c;能够利用数组对象渲染页面 对象综合案例数据类型存储 对象 对象&#xff08;Object&#xff09;&#xff1a;JavaScript里的一种数据类型&#xff08;引用类型&#xff09;&#xff0c;也是用于存储数据的 好处&#x…