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的对于图片的辨识度比较低,所以要求点击的位置一定要精确截图,写的有些地方不是很详细,之后我再补充。