zoukankan      html  css  js  c++  java
  • 使用SikuliX定位Object(flash)元素

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

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

      对于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是允许。

  • 相关阅读:
    hdu 3832 Earth Hour
    hdu 2112 HDU Today
    hdu 2473 Junk-Mail Filter
    hdu 1558 Segment set
    5-2学习记录|5-3日
    看面经
    2020-5-1学习记录
    2020-4-30学习记录
    2020-4-27学习记录
    4.19日学习笔记
  • 原文地址:https://www.cnblogs.com/generalli2019/p/11463226.html
Copyright © 2011-2022 走看看