先说一下背景,这个是我们测试的系统上的一个上传文件的地方,但是用传统的selenium方法很难定位的到。具体的样子是下面这样的。
使用id等属性定位做点击操作好像不能直接操作。无奈之下,只好从网上找找方法。于是乎,就发现了一个好玩的东西Sikulix。
首先,我们需要准备以下,下载地址:https://raiman.github.io/SikuliX1/downloads.html
先在项目中导入jar包,sikulixsetup-1.1.0.jar,然后在cmd命令行输入: java -jar sikulixsetup-1.1.0.jar进行安装。
一般是选择这两个选项。
经过一番摸索,发现这个东西的原理大概就是:在当前可视窗口中,寻找与你截图相同的区域,然后操作该区域的中心点坐标!
安装完成后,最终会有几个东西,简单说下:
1.jar包:sikulix.jar,sikulixapi.jar,这两个jar包导入Eclipse中的project。具体导入buildpath---->add external libray
2.sikulix的IDE,runsikulix.cmd
看名字就差不多能够明白啦。不过,我们这里只是使用它来定位我们想要点击的地方,因此我们先来截图。
Screen s = new Screen();
String target = "F:\\abc\\pic\\test1.png";
Pattern tgp = new Pattern(target);
try {
if(s.find(tgp) != null) {
s.click(tgp);
}
}catch (FindFailed e) {
e.printStackTrace();
}
从这段代码可以看出,我们是通过截图来匹配中心点的位置,从而实现点击。
点击完成后,我们就可以使用上一篇介绍的AutoIt来实现文件的上传,从而使整个过程自动化了。
不过,这里还有一点需要备注一下:
System.setProperty("webdriver.gecko.driver", "c:\\geckodriver.exe");
FirefoxProfile profile = new FirefoxProfile();
//这一句是关键
profile.setPreference("plugin.state.flash", 2);
FirefoxOptions options = new FirefoxOptions();
options.setProfile(profile);
driver = new FirefoxDriver(options);
driver.manage().window().maximize();
这里,profile.setPreference("plugin.state.flash", 2);这一句是关键。对应的值为: 0是禁止,1是询问,2是允许。