在eclipse里面加sikuli project

接前文。

http://pydev.org/manual_101_interpreter.html

eclipse里面安装了pydev后,还有配置要做

1.jython只能import在它的Lib文件夹下的API,所以要解压sikuli-script.jar,然后把sikuli这个文件夹考到jython的Lib文件夹下面,如下图(这一步可以省略)





2. 在eclipse里面,打开window->preference->Pydev->interpreter jython,用右上角的Add来加一个,把jython的jar包加进去,如图


3.再Forced Buildins  tab新建一个sikuli(同1可省略)


4.在jython/lib下面可以看到sikuli的文件


把sikuli-java.jar加到proverties->external libs


然后创建sikuliwarapper,

在脚本的开始加入以下两句,不再调用sikui.Sikuli module

注意images文件夹的位置

importorg.sikuli.basics.SikuliXforJython

from sikuli import *

编译。。。。执行calc.py 文件


5.由于sikuli的log的可读性比较差,所以要做进一步的改进。做这个改进,需要以下的东西:

  • a wrapper for the Sikuli functions and classes 
  • a custom Robot Logger class
Sikuli Wrapper

全局的sikuli函数,比方说click(), exists(), find()等,实际上是Screen 类使用hack迁移到全局等级。使用如下代码:

10 # =============================================== #
11 #          Overwritten sikuli methods             #
12 # =============================================== #
13 
14 # function for calling native sikuli methods
15 def sikuli_method(name, *args, **kwargs):
16     return sys.modules['sikuli.Sikuli'].__dict__[name](*args, **kwargs)
17 
18 # overwritten Screen.exists method
19 def exists(target, timeout=None):
20     addFoundImage(getFilename(target))
21     return sikuli_method('exists', target, timeout)
22 
在这里,sikuli_method()是call native Sikuli全局函数。

Exists()是一个重写的例子。

更简单的是Sikuli的类。只要import Sikuli的类,换一个名字,比方说SikuliRegion,如下:

from sikuli.Sikuli import Region as SikuliRegion

23 # =============================================== #
24 #          Overwritten sikuli classes             #
25 # =============================================== #
26 
27 # overwriten Sikuli Region class
28 class Region(SikuliRegion, BaseLogger):
29 
30     def click(self, target, modifiers=0):
31         try:
32             return SikuliRegion.click(self, target, modifiers)
33         except FindFailed, e:
34             self.log.html_img("Find Filed", "images/" + getFilename(target))
35             self.log.screenshot(msg="Region", region=(self.getX(), self.getY(), self.getW(), self.getH()))
36             raise e
37     def exists(self, target, timeout=None):
38         img = getFilename(target)
39         reg = (self.getX(), self.getY(), self.getW(), self.getH())
40         addFoundImage(img, reg)
41         return SikuliRegion.exists(self, target, timeout)
这样就重写了Sikuli的methond。

这个Sikuli wrapper模块是为了收集更多的关于图像的信息,关于哪个图片被搜索,在哪个区域。这个信息被Robot Logger使用。


Robot Logger

是一个从Python logging 模块标准的logger类继承的,下面就是添加的部分。

以robot framework的形式来输出信息:"*INFO* Message text"

passed和failed的测试用例的信息

获得需要的regsion的图片,把它们加到Robog的日志。

logger.py

https://github.com/imikemo/Sikuli-and-Robot-Framework-Integration/blob/master/calctest/CalcLib/logger.py

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值