Sikuli+Selenium查询百度地图线路
生活随笔
收集整理的這篇文章主要介紹了
Sikuli+Selenium查询百度地图线路
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
介紹:最近要做一個內嵌百度地圖頁面的自動化,由于selenium定位不到百度地圖里面的元素,所以使用Sikuli以基于圖片的方式來定位,這里對Sikuli的用法加以總結。
安裝Sikuli
Sikuli官網介紹的是如何操作ppt,而我們是要定位當前頁面的圖片,實際使用的是SikuliX,所以Maven的配置不要復制官網的那個,在pom.xml添加如下依賴即可:
<dependency><groupId>com.sikulix</groupId><artifactId>sikulixapi</artifactId><version>1.1.0</version> </dependency>工具類
我這里封裝了一個工具類,封裝了Sikuli的幾個基本操作,如下:
import org.sikuli.script.FindFailed; import org.sikuli.script.Image; import org.sikuli.script.Pattern; import org.sikuli.script.Screen;/*** Author: 靈樞* Date: 2018/11/14* Time: 16:07* Description: Sikuli:可以根據圖片來定位,然后執行操作*/ public class SikuliUtil {public static Pattern pattern = null;public static Pattern pattern2 = null;public static Screen screen = null;/*** 實現單擊操作* @param iconPath 圖片路徑*/public static void click(String iconPath){if(isExist(iconPath)==false){System.err.println("找不到圖片:" + iconPath);}pattern = new Pattern(iconPath);screen = new Screen();try {screen.click(pattern);} catch (FindFailed e) {e.printStackTrace();System.err.println(e.getMessage());}clear();}/*** 雙擊操作* @param iconPath 圖片路徑* @return*/public static void doubleClick(String iconPath){if(isExist(iconPath)==false){System.err.println("找不到圖片:" + iconPath);}pattern = new Pattern(iconPath);screen = new Screen();try {screen.doubleClick(pattern);} catch (FindFailed e) {e.printStackTrace();System.err.println(e.getMessage());}clear();}/*** 拖拽功能,拖動路徑是icon1到icon2* @param icon1Path* @param icon2Path*/public static void dragDrop(String icon1Path,String icon2Path){if(isExist(icon1Path)&&isExist(icon2Path)){pattern = new Pattern(icon1Path);pattern2 = new Pattern(icon2Path);screen = new Screen();try {screen.dragDrop(pattern,pattern2);} catch (FindFailed e) {e.printStackTrace();System.err.println(e.getMessage());}clear();}}/*** 驗證圖片是否存在* @param iconPath*/public static boolean isExist(String iconPath){boolean exist;pattern = new Pattern(iconPath);screen = new Screen();try {screen.find(pattern);exist = true;} catch (FindFailed e) {e.printStackTrace();exist = false;}clear();return exist;}/*** 關閉彈窗*/public static void closePrompt(){Screen.closePrompt();}/*** 清空變量值*/public static void clear(){if(pattern != null){pattern = null;}if(pattern2 != null){pattern2 = null;}if(screen != null){screen = null;}} }實例
- 在百度地圖頁面,通過地圖選點的方式查找線路:成都東站-成都大熊貓繁育研究基地
- 代碼運行如下圖:
- 有一點要注意的是,Sikuli對圖片識別是針對電腦當前頁面的,只有屏幕有對應的圖片,才可能被定位到。
總結
優點:
缺點:
總結
以上是生活随笔為你收集整理的Sikuli+Selenium查询百度地图线路的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java函数修饰符_Java 函数 面
- 下一篇: 13种权重的计算方法