先说一下背景,这个是咱们测试的系统上的一个上传文件的地方,可是用传统的selenium方法很难定位的到。具体的样子是下面这样的。html
使用id等属性定位作点击操做好像不能直接操做。无奈之下,只好从网上找找方法。因而乎,就发现了一个好玩的东西Sikulix。java
首先,咱们须要准备如下,下载地址:https://raiman.github.io/SikuliX1/downloads.htmlgit
先在项目中导入jar包,sikulixsetup-1.1.0.jar,而后在cmd命令行输入: java -jar sikulixsetup-1.1.0.jar进行安装。github
通常是选择这两个选项。web
通过一番摸索,发现这个东西的原理大概就是:在当前可视窗口中,寻找与你截图相同的区域,而后操做该区域的中心点坐标!api
安装完成后,最终会有几个东西,简单说下:浏览器
1.jar包:sikulix.jar,sikulixapi.jar,这两个jar包导入Eclipse中的project。具体导入buildpath---->add external libray测试
2.sikulix的IDE,runsikulix.cmdui
看名字就差很少可以明白啦。不过,咱们这里只是使用它来定位咱们想要点击的地方,所以咱们先来截图。spa
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是容许。