先說一下背景,這個是咱們測試的系統上的一個上傳文件的地方,可是用傳統的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是容許。