| 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类。拿传奇霸业这款游戏做例子,实现自动打副本的这样一个辅助。首先 用一个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;
- import com.thoughtworks.selenium.Selenium;
- 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是根据图形元素来实现自动化的,所以一定要确保这些图形元素的样式是可以找到的,背景颜色的变化等因素都会影响到自动化能否顺利进行下去。 来自: http://www.cnblogs.com/LanTianYou/p/5074673.html |