使用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是容許。

相關文章
相關標籤/搜索