热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sikulixlinux测试,SikuliX使用笔记

前言Sikuli是通过图像识别在应用的自动化的,完全的黑盒,适用于很多应用的测试最初接触大概是2014年,今天又翻开看了看,

前言

Sikuli 是通过图像识别在应用的自动化的,完全的黑盒,适用于很多应用的测试

最初接触大概是 2014 年,今天又翻开看了看,发现这东西一直都在维护,现在名字叫 SikuliX 了,功能越来越强。正好项目组需要用到 Windows 自动化,重新学习起来

因为 SikuliX 是用 Java 写的,如果需要用其他语言写脚本,需要用到 Jython 或者 JRuby, Javascript(Rhino)

这里我的笔记里面用的是Python

使用记录

这里我用的是 1.1.3

截图如下

395234193901e2b117f00b5111bbccfa.png

常用快捷键

Alt+Shift+C 停止脚本运行

Ctrl+R 运行

Ctrl+Alt+R 单步执行

Ctrl+T 显示/隐藏缩略图

Ctrl+L 显示隐藏命令列表

常用接口 openApp(someApp) # we use an application someAppclick(imageButton) # we click some buttonwait(imageExpected1) # we wait for the app to react and show the expected result on the screentype(“some text”); type(Key.ENTER) # we fill in some text and press ENTERwait(imageExpected2) # again we wait for some expected reaction or resultclick(…) # we click …wait(…) # we wait …type(…) # we type …wait(…) # we wait …

保存图片到本地 源码链接

# 保存图片,其中图片扩展名只能是.png, _ 开头的文件名Screen().capture(Region(343,97,1425,881)).saveInBundle("g") # save as _g.png

全局配置

从文档中很少看到默认值是啥,所以除非我备注写了,一般我都是不知道默认值的

Settings.MoveMouseDelay = 0.5 # default,鼠标移动速度,如果设置为0,鼠标将瞬间跳转过去Settings.ClickDelay # 点击时长,最大1sSettings.TypeDelay # 输入延迟,最大1s

Settings.ObserveScanRate = 0.2 # 每秒监控的次数,也就是每5s检查一次Settings.AlwaysResize = 0.5 # 匹配图片前,先将匹配图片宽高缩小一倍。通常用来匹配不同分辨率的设备Settings.ImageCallback # 搜索前的回调,一般可以用来修改原图 https://sikulix-2014.readthedocs.io/en/latest/scripting.html#Settings.ImageCallback

图片查找和鼠标操作

图像查找接口

d78bcd68bb796be75a21240d18e9c15c.png

has 这个函数据说是对 exists 函数的一个封装。具体怎么不一样不太清楚了

findChange 返回跟原图的差异地方,list of areas

findAll

def by_y(match):

return match.y

icons = findAll("png_icon.png")

# sort the icons by their y coordinates and put them into a new variable sorted_iconssorted_icons = sorted(icons, key=by_y)

# another shorter version is using lambda.sorted_icons = sorted(icons, key=lambda m:m.y)

for icon in sorted_icons:

pass # do whatever you want to do with the sorted icons

文本查找接口

25962e9425f47c798bcaadac44ea65bd.png

findAny, findBest

# find the best matching pattern of the given list of patternsresult = findBest(pattern, pattern, pattern, ...) # var-arg parameterlistresult = findBestList(List) # a list of patterns

# find all matching patterns in the listresult = findAny(pattern, pattern, pattern, ...) # var-arg parameterlistresult = findAnyList(List) # a list of patterns

交互操作

弹出框

5676b93a0b85e1e3b55e0112b079369b.png

popup("Hello World!\nHave fun with Sikuli!") # 弹出一个消息

answer = popAsk("Should we really continue?")

if not answer:

exit(1)

App 操作

openApp

# Windows: run a batch file in a new command window:openApp("cmd.exe /c start path-to-some.bat")

# Windows: opens Firefox (full path specified)openApp(r"c:\Program Files\Mozilla Firefox\firefox.exe")

# Mac: opens SafariopenApp("Safari")

switchApp

# Windows: switches to an already opened Firfox or opens it otherwiseswitchApp("c:\\Program Files\\Mozilla Firefox\\firefox.exe")

# Windows: switches to the frontmost opened browser window (or does nothing

# if no Firefox window is currently opened)

# works, because all Firefox window titles contain "Mozilla Firefox"switchApp("Mozilla Firefox")

# Mac: switches to Safari or starts itswitchApp("Safari")

closeApp

# Windows: closes Firefox if it is running, does nothing otherwisecloseApp("c:\\Program Files\\Mozilla Firefox\\firefox.exe")

# Windows: stops firefox including all its windowscloseApp("Mozilla Firefox")

# Mac: closes Safari including all its windowscloseApp("Safari")

监控和事件 Observe

def myHandler(event): # you can choose any valid function name # event: can be any variable name, it references the ObserveEvent object pass # add your statements here

onAppear("path-to-an-image-file", myHandler) # or any other onXYZ()observe(10) # observes for 10 seconds

# observe(FOREVER)

7a8d3ffb6cb81e0ff9fc8a9fefc35037.png

脚本调试

setFindFailedResponse(PROMPT)

加上这行代码之后,每当出现图像匹配出错的时候就会蹦出来一个对话框

0386f82a8d1796bb5b15b668a07f18bb.png

问你想怎么处理,是跳过,还是重试,还是直接结束掉脚本。

最新的版本还提供了重新截图的功能(比较适合图片需要更新的情况,感觉很好用)

命令行启动

1.1.3 版本命令行运行

java -Xms64M -Xmx512M -Dfile.encoding=UTF-8 -Dsikuli.FromCommandLine -jar sikulix.jar -r some-app.sikuli

其中倒数第三个参数 sikulix.jar 不在当前目录也可以。

其他

边看边补充,文章先发了。



推荐阅读
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路
    本文介绍了FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路。当图表系列较多时,用户希望可以自己设置哪些系列显示,哪些系列不显示。通过调用FR.Chart.WebUtils.getChart("chartID").getChartWithIndex(chartIndex).setSeriesVisible()接口,可以获取需要显示的系列图表对象,并在表单中显示这些系列。本文以决策报表为例,详细介绍了实现方法,并给出了示例。 ... [详细]
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
author-avatar
白变小樱啊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有