Mac环境下用Java(Sikuli+Robot)实现页游自动化
转载请注明出自天外归云的博客园: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)实现页游自动化的更多相关文章
- Xamarin Studio在Mac环境下的配置和Xamarin.iOS常用控件的示例
看过好多帖子都是Win环境装XS,Mac只是个模拟器,讲解在Mac环境下如何配置Xamarin Studio很少,也是一点点找资料,东拼西凑才把Xamarin Studio装在Mac上跑起来,如下: ...
- Mac环境下Myeclispe2015工具的安装与破解
链接地址:http://www.07net01.com/2015/08/919753.html 07net01.com 发布于 2015-08-30 22:19:37 分类:IT技术 阅读(306) ...
- cocos2dx 3.1.1移植安卓apk (lua项目交叉编译 mac环境下)
cocos2dx 3.1.1 lua项目安卓交叉编译 mac环境下 本文基于ant,sdk,ndk,adt等软件和环境已经事前设置好 1\新建项目 在mac的终端下输入命令: cocos new te ...
- mac 环境下Android 反编译源码
mac环境下Android 反编译 一.需要的工具 apktool:反编译APK文件,得到classes.dex文件,同时也能获取到资源文件以及布局文件. dex2jar:将反编译后的classes. ...
- Mac环境下svn的使用
在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境.在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还 ...
- MAC环境下 nodejs 4.5.0 卸载
MAC 环境下,我之前的删除 node 环境如果是用brew 安装的 node.js 4.4 之前的版本.可以网上参考其他方法,我之前的帖子也有之前的删除方法.参考帖子: http://www.cnb ...
- php大力力 [003节]php在百度文库的几个基础教程mac环境下文本编辑工具
2015-08-22 php大力力003.mac环境下文本编辑工具 在windows下,使用notepad特别多.在mac下使用“备忘录”app,word,反而没有存储过txt后缀等不同文本. mac ...
- Mac环境下svn的使用(转载)
在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境.在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还 ...
- 【Xamarin挖墙脚系列:时刻下载最新的Mac环境下的Xamarin安装包】
原文:[Xamarin挖墙脚系列:时刻下载最新的Mac环境下的Xamarin安装包] 打开这两个地址,就能看到最新的安装包了.... http://www.jianshu.com/p/c67c14b3 ...
随机推荐
- eclipse不自动弹出提示
最近公司电脑上的Eclipse没有了自动提示功能,也不是全部不提示,大多数情况下按下“alt+/”键还会产生提示,但是当我在java项目中邪main方法和syso的时候,“alt+/”则会失效,今天在 ...
- WebView自适应屏幕大小
webView.getSettings().setUseWideViewPort(true); webView.getSettings().setLoadWithOverviewMode(true); ...
- Android使用ZXing生成带图片的二维码
效果图如下: 制作过程很简单的就是在原始的二维码图片上添加一个logn图标,代码的注释写得很详细,也就不给大家啰嗦了 package com.example.day44_02_qrcodewithlo ...
- html随笔
<!DOCTYPE HTML> <html> <head> <meta charset = "utf-8"> <script ...
- 开启xp_cmdshell
--打开xp_cmdshell EXEC sp_configure 'show advanced options', 1GORECONFIGUREGOEXEC sp_configure 'xp_cmd ...
- SqlServer 在创建数据库时候指定的初始数据库大小是不能被收缩的
当你在SqlServer创建数据库的时候可以指定数据库文件的初始大小,比如下图中我们将新创建的数据库MyDB的大小设置成了1024MB 那么你建好的数据库的确也就会占用1024MB左右的磁盘空间 不过 ...
- Openstack的HA解决方案【haproxy和keepalived】
1. 安装haproxy,keepalived, httpd,3台机器一致. yum install haproxy keepalived httpd -y 2. 修改httpd的默认页面. 在/va ...
- Xml游标
Mainactivity package com.exmple.xmlstream; import java.util.ArrayList; import java.util.List; import ...
- 为 Macbook 安装 enca 命令
enca 是个查看.转换编码的开源软件, 地址: http://dl.cihar.com/enca/ 安装的步骤比安装 wget 简单多了: 1.用 wget 获取最新的enca 的 tar.gz 的 ...
- linux设备驱动归纳总结(五):4.写个简单的LED驱动【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-84693.html linux设备驱动归纳总结(五):4.写个简单的LED驱动 xxxxxxxxxxx ...