转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/

Sikulix(以前叫Sikuli)在Mac电脑的环境配置步骤如下:

1、从官网上下载Sikulix最新版本(目前为1.1.0)->下载地址(或者看这里)->下载sikulixsetup-1.1.0.jar (md5)(包名可能略有差别这无所谓);

2、在桌面新创建一个文件夹,命名为Sikulix;

3、把下载的sikulixsetup-1.1.0.jar文件放在Sikulix文件夹下,双击打开;

4、选择你要安装的,我选择了前两项:

5、点击“Setup Now”进行自动安装;

6*、如果过程中出现下载失败的提示,是因为电脑的安全设置造成的。需要手动下载这些提示下载失败的文件(点击进入下载页面)。

7*、手动下载完成后,将下载的文件全都转移到桌面的Sikulix文件夹内,然后重新打开sikulixsetup-1.1.0.jar文件进行安装,随提示一路“Yes”即可。

环境配置至此已经基本完成,下面就可以在Sikulix文件夹中双击打开Sikulix IDE进行使用了:

下面我用传奇霸业这款游戏做一下示范,点到为止(打开网页,然后选择左侧栏中的鼠标动作,对需要点击的网页元素进行按序截图):

点击运行,就可以在浏览器中看到我们录制的操作自动运行了。

这就是Sikulix的威力,通过识别图像的方式来实现自动化。详细的介绍和文档,可以看看官方的教程

Sikulix还可以通过Java进行编程,下面我来介绍一下JAVA环境的配置(在安装好JDK之后):

1、查找JAVA_HOME的路径:which java->/usr/bin/java->cd /usr/bin->ls -l|grep java->cd /System/Library/Frameworks/JavaVM.framework/Versions/Curr(tab)->CurrentJDK->ls->cd Home->pwd->这就是JAVA_HOME路径;

2、配置JAVA_HOME的路径:vi ~/.bash_profile->i->配置JAVA_HOME路径到配置文件即完成了配置。

至此,Java的环境就配好了。打开Eclipse,新建项目,如果遇到了Java.lang.Object空引用错误:

1*、修改Eclipse Preference设置->Compiler的java版本号,使和你安装的Java版本一致(我这里装的是1.6,所以Compiler选择1.6);

2*、修改Eclipse Preference设置->Installed JREs->Add->Standard VM->JRE Home->填写JAVA_HOME路径;

3*、重启Eclipse;

4、新建项目,之后就可以按照Sikulix api进行编程了,这里为了更好实现网页flash的自动化,还用到java自己的Robot类。至于准备工作,我们事先需要把Skulix文件夹下的SikulixApi的jar包复制粘贴到当前项目的lib文件夹下(没有的话就创建一个),然后项目上点右键->build configuration一下,把复制粘贴的这些jar包文件都导进来。之后就可以在项目中import相关的库了。

下面拿传奇霸业这款游戏做例子,实现自动打副本的这样一个辅助。首先用一个UserInfo类来封装用户名和密码:

import java.util.Set;

public class UserInfo {
String userName;
String passWord; public UserInfo() {
this.userName = "用户名";
this.passWord = "密码";
}
}

用Sikulix实现自动化的过程要注意图片元素的截取,不要用QQ截图之类的工具,要用Sikulix IDE来截图,然后把截图转移到专门的目录下:

之后在程序中就可以让Sikuli通过这些图片对应的路径来识别图片,并在网页上找到对应的图形元素,实现自动化点击等操作了:

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import org.sikuli.script.*;
import com.opera.core.systems.internal.input.KeyEvent; public class Test {
public static void main(String[] args) throws FindFailed,
InterruptedException, IOException, AWTException {
Screen screen = new Screen();
String imgPath = "/Users/tylan/Desktop/SikuliPics/test";
String chromeImg = imgPath + "/chrome.png";
String newTabImg = imgPath + "/newTab.png";
String startImg = imgPath + "/start.png";
String loginImg = imgPath + "/login.png";
String fubenImg = imgPath + "/fuben.png";
String bloodImg = imgPath + "/blood.png";
String backHomeImg = imgPath + "/backHome.png";
String zumaReadyImg = imgPath + "/zumaReady.png";
String jinruFubenImg = imgPath + "/jinruFuben.png";
//Visit the CQ site.
screen.wait(chromeImg).click();
screen.wait(newTabImg).click();
screen.type("http://cqby.wan.360.cn/game_login.php?server_id=S577&&src=loginhistory");
Robot robot = new Robot();
robot.keyPress(java.awt.event.KeyEvent.VK_ENTER);
//Login the game.
screen.wait(startImg, 10).click();
Thread.sleep(1000);
UserInfo uInfo = new UserInfo();
screen.type(uInfo.passWord);
Thread.sleep(2000);
screen.wait(loginImg).click();
//Navigate to the fuben.
screen.wait(bloodImg, 10);
screen.wait(backHomeImg, 3).click();
Thread.sleep(1000);
screen.wait(fubenImg, 5).click();
screen.wait(zumaReadyImg, 2).click();
screen.wait(jinruFubenImg, 1).click();
Thread.sleep(3000
);
robot.keyPress(java.awt.event.KeyEvent.VK_Z);

}
}

要控制好不同操作之间时间的间隔,控制好等待时间,才能顺利的实现预期的自动化效果。Sikuli是根据图形元素来实现自动化的,所以一定要确保这些图形元素的样式是可以找到的,背景颜色的变化等因素都会影响到自动化能否顺利进行下去。

Mac环境下用Java(Sikuli+Robot)实现页游自动化的更多相关文章

  1. Xamarin Studio在Mac环境下的配置和Xamarin.iOS常用控件的示例

    看过好多帖子都是Win环境装XS,Mac只是个模拟器,讲解在Mac环境下如何配置Xamarin Studio很少,也是一点点找资料,东拼西凑才把Xamarin Studio装在Mac上跑起来,如下: ...

  2. Mac环境下Myeclispe2015工具的安装与破解

    链接地址:http://www.07net01.com/2015/08/919753.html 07net01.com 发布于 2015-08-30 22:19:37 分类:IT技术 阅读(306) ...

  3. cocos2dx 3.1.1移植安卓apk (lua项目交叉编译 mac环境下)

    cocos2dx 3.1.1 lua项目安卓交叉编译 mac环境下 本文基于ant,sdk,ndk,adt等软件和环境已经事前设置好 1\新建项目 在mac的终端下输入命令: cocos new te ...

  4. mac 环境下Android 反编译源码

    mac环境下Android 反编译 一.需要的工具 apktool:反编译APK文件,得到classes.dex文件,同时也能获取到资源文件以及布局文件. dex2jar:将反编译后的classes. ...

  5. Mac环境下svn的使用

    在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境.在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还 ...

  6. MAC环境下 nodejs 4.5.0 卸载

    MAC 环境下,我之前的删除 node 环境如果是用brew 安装的 node.js 4.4 之前的版本.可以网上参考其他方法,我之前的帖子也有之前的删除方法.参考帖子: http://www.cnb ...

  7. php大力力 [003节]php在百度文库的几个基础教程mac环境下文本编辑工具

    2015-08-22 php大力力003.mac环境下文本编辑工具 在windows下,使用notepad特别多.在mac下使用“备忘录”app,word,反而没有存储过txt后缀等不同文本. mac ...

  8. Mac环境下svn的使用(转载)

    在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境.在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还 ...

  9. 【Xamarin挖墙脚系列:时刻下载最新的Mac环境下的Xamarin安装包】

    原文:[Xamarin挖墙脚系列:时刻下载最新的Mac环境下的Xamarin安装包] 打开这两个地址,就能看到最新的安装包了.... http://www.jianshu.com/p/c67c14b3 ...

随机推荐

  1. Lintcode: Maximum Subarray II

    Given an array of integers, find two non-overlapping subarrays which have the largest sum. The numbe ...

  2. php-引号中出现$

    当双引号中包含变量时,变量对应的值会与双引号中的内容连接在一起: 当单引号中包含变量时,变量会被当做字符串输出. 慕课网,I love you!慕课网,$love

  3. CCF真题之最大矩形

    201312-3 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi.这n个矩形构成了一个直方图.例如,下图中六个矩形的高度就分别是3, 1, 6 ...

  4. spark join broadcast优化

    在大量数据中对一些字段进行关联. 举例 ipTable:需要进行关联的几千条ip数据(70k) hist:历史数据(百亿级别) 直接join将会对所有数据进行shuffle,需要大量的io操作,相同的 ...

  5. paper 64:尺度空间(Scale space)理论

    尺度空间方法的基本思想是:在视觉信息处理模型中引入一个被视为尺度的参数,通过连续变化尺度参数获得不同尺度下的视觉处理信息,然后综合这些信息以深入地挖掘图像的本质特征.尺度空间方法将传统的单尺度视觉信息 ...

  6. ie6双边距解决

    这个bug是ie6有名的双边距bug:同时为一个元素设置向一个方向偏移和对这个方向进行外边距设置,比如float:left,margin-left:45px;在其他浏览器下是显示正常的,在ie6下这个 ...

  7. angular 自定义指令

    Template-expanding directive: <div ng-controller="Controller"> <div my-customer&g ...

  8. oracle热备份

    1:热备份: SHUTDOWN IMMEDIATE; STARTUP MOUNT; alter database archivelog; --ALTER SYSTEM SET LOG_ARCHIVE_ ...

  9. 夺命雷公狗ThinkPHP项目之----企业网站18之网站配置列表页的完成

    我们点击下配置列表即可查看我们列表页的配置信息了: 其实这个最简单了,首先我们先来完成他控制器的代码: public function lists(){ $mod = M('Conf')->se ...

  10. 机器学习(Machine Learning)&深入学习(Deep Learning)资料

    <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost 到随机森林. ...