使用SikuliX定位Object(flash)元素

  先说一下背景,这个是咱们测试的系统上的一个上传文件的地方,可是用传统的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来实现文件的上传,从而使整个过程自动化了。

  不过,这里还有一点须要备注一下:

  对于selenium启动的firefox来讲,是不加载任何插件的。因此, 在浏览器进行初始化的时候,须要加载adobe-flash的插件!
  

  

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是容许。

相关文章
相关标签/搜索