您的位置:首页 > 其它

Sikuli 结合selenium的一些使用

2016-08-21 16:44 375 查看
其实很多人在使用selenium 做自动化的时候都会遇到这样子的一个问题,就是要进行文件的上传。对于简单一些的元素 如 这种可能可以通过直接的sendkey进行赋值,但是对于flash的这种 selenium就无能为力了。并且还得操作windows的文件上传框。

其实这个解决办法在解决 Selenium文件上传框无法识别的问题 这篇文章里面已经提及过了, 可以使用autoIt以及python的pywin32库来解决这个问题。

不足

autoit 编译以后实际上是一个可执行的exe文件,相当于我们要在脚本中去调用另外一个应用程序,这样子调试起来就相当的不方便了,一旦有问题需要重新修改脚本,重新生成一个exe文件出来。

pywin32当然只能够支持python的语言啦,所以如果想要java语言来解决这个问题的话,只能够另辟途径啦, 所以就考虑到sikuli了。

Sikuli

使用图像识别方法来识别GUI元素,将你在屏幕上看到的一切自动化

如何使用

sikuli 有提供IDE的方式进行使用的,但是我们这里主要是讲如何结合selenium进行测试。

1. 我们需要下载sikuli对应的api jar包,在pom.xml中进行如下的配置。

```
<dependency>
<groupId>com.sikulix</groupId>
<artifactId>sikulixapi</artifactId>
<version>1.1.0</version>
</dependency>
```


2. 通过查看对应的API, 我们发现想要做到对象的操作如 点击、拖拽等 都是需要依赖于Screen这个类。具体可以查看 Screen的API 。所以我们就可以简单的通过如下方式进行一个元素的点击了。

``` java
Screen screen = new Screen();
screen.click("./res/sikuli/1471679512789.png");
```


但是这样子总感觉缺少了什么,对比sikuli的IDE 我们发现还可以设置图片查找的相似度以及点击位置的偏移 。



以上是IDE 设置了相似度80% 以及 x轴偏移2以后的结果提示。

再来我们再来看下
screen.click()
方法的参数

public int click(PFRML target) PFRML - to search: Pattern, Filename, Text, Region, Match or Location

所以click的参数 实际上我们可以传一个Pattern的类型。所以参照Pattern的用法,我们就可以写出一个前面IDE中的情况了。

Pattern resPath = new Pattern("./res/sikuli/res_path.png").targetOffset(-2,0).similar(0.8f);
screen.click(resPath);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  selenium sikuli