sikuli+eclipse对于安卓app自动化测试的应用

news2024/9/28 9:19:10

Sikuli是什么?

下面是来自于官网的介绍:Sikuli is a visual technology to automate and test graphical user interfaces (GUI) using images (screenshots). Sikuli includes Sikuli Script, a visual scripting API for Jython, and Sikuli IDE, an integrated development environment for writing visual scripts with screenshots easily. Sikuli Script automates anything you see on the screen without internal API’s support. You can programmatically control a web page, a Windows/Linux/Mac OS X desktop application, or even an iphone or android application running in a simulator or via VNC.

Sikuli是一种使用截图进行UI自动化测试的技术。Sikuli包括sikul脚本,基于Jython的API以及sikuli IDE。Sikuli可以实现任何你可以在显示器上看到ui对象的自动化,你可以通过编写一些代码来实现web 页面,window/linux/Mac OS X桌面应用、甚至是iphone和android模拟器的自动化测试。

实现sikuli+eclipse在安卓上的应用需要的相关软件和jar包:

1.sikulixsetup-1.1.0.jar/sikulixapi.jar(前者可以通过命令产生后者)

2.eclipse

3.小萝贝控机大师

4.一台安卓手机+数据线

5.安卓app的apk

第一步,首先讲一下,如何通过sikulixsetup-1.1.0.jar生成sikulixapi.jar包

sikulixsetup下载地址:
https://launchpad.net/sikuli/+download

  • 将jar包导入工程中;
  • 在cmd中运行该jar包。java -jar sikulixsetup-1.1.0.jar,则会出现如下图,选择相应选项后,启动会下载sikulixapi.jar。不然会报错:libs to export not found on above classpath: /sikulixlibs/mac/libs642.
  • 选择第二个
  • 启动后会有have fun的提示;
  • 在文件夹中找到下载的sikulixapi.jar包,导入到工程中。
  • 将apk放入项目的apps文件夹中,apps是后建的


第二步,将手机关联到电脑上

第三步,打开小萝贝控机大师,手机的界面可以在电脑上见得。

第四步,在eclipse中写代码,代码如下:

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.sikuli.script.FindFailed;
import org.sikuli.script.Screen;

public class SikuliTest {
/*@Before
public void setUp() throws Exception{

    System.out.println("App is launched!");


}*/

@Test

 public void addContact() throws FindFailed, InterruptedException{
    //获得电脑桌面屏幕内容
    Screen s = new Screen();
    //图片存储路径
    String imgpath="D:\\eclipse-jee-mars-2-win32-x86_64\\Appium_demo\\pics\\";
    //点击最小化,最小化eclipse
    s.click("D:\\eclipse-jee-mars-2-win32-x86_64\\Appium_demo\\pics\\min1.png");
    //找到桌面上控机大师中的图标
    s.find(imgpath+"Contect.png");
    s.click(imgpath+"Contect.png");
    
    Thread.sleep(1000);
    
    s.click(imgpath+"AddContact.png");
    
    Thread.sleep(1000);
    //输入contactname为some
    s.type(imgpath+"Contactname.png", "some");
    s.click(imgpath+"Contactemail.png");
    
    Thread.sleep(1000);

    s.type(imgpath+"Contactemail.png", "some@163.com");
    
    Thread.sleep(1000);
    
    s.click(imgpath+"save.png");
    
    System.out.println("App is done!");
}

@After

public void tearDown() throws Exception {

    //此处可以添加关闭该程序的按钮click,在此没有写出

}

}

第五步,右键,选择run as—>junit test运行该程序

运用sikuli+eclipse对安卓app进行自动化测试完成了,很简单吧,但是sikuli的对于图片的辨识度比较低,所以要求点击的位置一定要精确截图,写的有些地方不是很详细,之后我再补充。

最后:下方这份完整的自动化测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】

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

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

相关文章

入门Java第十五天 线程

一、多线程 1.1进程和线程 进程:进程就是操作系统中运行的每一个应用程序。例如:微信,QQ 线程:线程是进程中的每一个任务。 多线程:在一个进程中,可以同时执行多个线程。同时完成多个任务。 并发&#x…

投票的链接怎么做出来的网上那些投票链接怎么做的网上投票器

用户在使用微信投票的时候,需要功能齐全,又快捷方便的投票小程序。而“活动星投票”这款软件使用非常的方便,用户可以随时使用手机微信小程序获得线上投票服务,很多用户都很喜欢“活动星投票”这款软件。“活动星投票”小程序在使…

【踩坑记录】使用OpenCV报错“ undefined symbol: TIFFReadRGBATileExt, version LIBTIFF_4.0”

问题描述 例如:使用OpenCV报错,找不到相关动态库: ImportError: /lib/libgdal.so.26: undefined symbol: TIFFReadRGBATileExt, version LIBTIFF_4.0解决方案: 运行前,先执行或者在./bashrc (根目录下ctr…

【图像分类】卷积神经网络之ZFNet网络模型结构详解

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 1. 前言 由于AlexNet的提出,大型卷积网络开始变得流行起来,但是人们对于网络究竟为什么能表现的这么好,以及怎…

Python编写GUI界面案例:实现免费下载器

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 本次网站: 本文所有模块\环境\源码\教程皆可点击文章下方名片获取此处跳转 开发环境: python 3.8 运行代码 pycharm 2022.3 辅助敲代码 模块使用: import parsel >>> pip install parsel…

从0开始学python -41

Python3 命名空间和作用域 命名空间 先看看官方文档的一段话: A namespace is a mapping from names to objects.Most namespaces are currently implemented as Python dictionaries。 命名空间(Namespace)是从名称到对象的映射,大部分的命名空间都是…

蓝牙耳机适合跑步戴吗,五款适合跑步蓝牙耳机推荐

音乐是坚持运动下去的不懈动力,在运动当中佩戴蓝牙耳机,能够让我们远离枯燥无味,运动更有律动感,运动更为畅快。运动当中佩戴的蓝牙耳机,佩戴舒适度以及牢固度是我们十分需要注意的,下面这几款比较热门的运…

IP-GUARD控制台账户输入多次错误密码锁定后该如何解锁?

其他管理员账户给锁定了,暂时只能等其锁定时间到了才可以再次输入,默认是设置是锁定30min; 1、如果急需此账户查看,可以使用admin系统管理员账户登录控制台,在工具-账户中清除这个账户的密码,重新登录设置密码。

idea远程调试线上jar包

有时候本地代码没问题但在线上运行会报错,这时候可以使用idea的remote功能调试线上jar包 步骤1 步骤2:新建remote 步骤3:配置服务器ip和端口 并复制生成的JVM参数供之后使用 步骤4:打jar包,并将生成的jar包放到服务…

想招到实干派程序员?你需要这种面试法

技术招聘中最痛的点其实是不精准。技术面试官或CTO们常常会向我们吐槽: “我经常在想,能不能把我们项目中的代码打印出来,作为候选人的面试题的一部分?” “能不能把一个Bug带上环境,让候选人来试试怎么解决&#xf…

电信网上用户资管理系统的设计与实现

技术:Java、JSP等摘要:在对目前市面上已经拥有的营业厅功能分析和整理后,为了保证营业厅中多种功能的分层次处理设计了一个的电信网上用户自管理系统,以web页面方式实现了与用户的交互,同时保证了移动电话计费管理系统…

数据结构期末复习总结(后章)

作者的话 作为一名计算机类的学生,我深知数据结构的重要性。在期末复习前,我希望通过这篇博客给大家一些复习建议。希望能帮助大家夯实数据结构的基础知识,并能够更好地掌握数据结构和算法的应用。 一、树与二叉树 1.基本概念 结点的度&am…

Google的中国用户注意!黑客正利用搜索结果投放恶意软件

2月16日研究人员发现,Google搜索结果中含有冒充知名软件的恶意软件下载链接。 研究人员通过测试后表示,攻击者为了增加浏览量,甚至通过在Google搜索结果中购买误导性广告,诱骗受害者下载安装恶意程序。 据悉,这些被冒…

【JavaSE】集合(Collection类)

文章目录1.集合框架1.1 collection1.2 map2. collection2.1.集合迭代2.2.contains和remove2.3集合中元素的删除3.List4.ArrayList5.LinkList6.Vector7.泛型7.1泛型初步7.2自动类型推断机制7.3 自定义泛型8.增强for循环9.Set9.1HashSet9.2 TreeSet1.集合框架 1.1 collection 1.…

4G模块DTU网关远程抄表方案(二):DL645/698协议国网电表

4G模块DTU网关远程抄表方案(二):DL645/698协议国网电表 1 DL 645协议简介 DL645协议是一种用于智能电能表的远程抄读通讯标准。制定该标准是为统一和规范多功能电能表与数据终端设备进行数据交换时的物理连接和通信链路及应用技术规范。DL645协议可用于远程监测电力传输和使用…

【2223sW1】LOG2

写在前面 好好学习,走出宿舍,走向毕设! 一些心路历程记录,很少有代码出现 因为鬼知道哪条代码到时候变成毕设的一部分了咧,还是不要给自己的查重挖坑罢了 23.2.22 今儿收获挺多,所以就把上一个LOG给发了…

戴尔dell inspiron-5598电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网,转载需注明出处。硬件型号驱动情况主板X99 K9 v2 Machinist处理器i5-10210U / *i7-10510U已驱动内存20GB已驱动硬盘1000GB SAMSUNG 860 QVO SATA已驱动显卡Intel UHD 620已驱动声卡Realtek ALC3204/236已驱动网卡RTL8168H Gigabit Ethernet已…

测量 R 代码运行时间的 5 种方法

简介 平常在撰写论文时,会需要比较算法之间的计算时间。本篇文章给出几种测量 R 代码运行时间的方法。本文是小编学习过程中的笔记,主要参考博客1,2。 1. 使用 Sys.time() 小编通常使用 Sys.time() 函数来计算时间。首先记录当前运行时刻&…

ChatGPT火到汽车圈,毫末智行、集度纷纷进场

作者 | 白日梦想家 编辑 | 于婷ChatGPT的火爆,已经席卷到了汽车领域。 众多相关企业宣布纷纷布局,车企也争相宣布将搭载类似产品。 2月初,百度宣布将在今年3月完成类似ChatGPT的项目“文心一言”的内部测试。据悉,该产品是基于百度…

Postgresql源码(101)深入分析clog组提交(clog group updates)

1 背景知识 1.1 CLOG使用的全局变量XactLastRecEnd XLogRecPtr ProcLastRecPtr InvalidXLogRecPtr; XLogRecPtr XactLastRecEnd InvalidXLogRecPtr; XLogRecPtr XactLastCommitEnd InvalidXLogRecPtr;其中ProcLastRecPtr、XactLastRecEnd更新位置XLogInsertRecord&#xf…