android UiAutomator如何根據顏色判斷控制項的狀態
- 2019 年 10 月 4 日
- 筆記
本人在用UiAutomator做測試的時候,經常會遇到一些控制項因為不同的條件顯示不同的顏色,在學習了UiAutomator影像處理之後,自己嘗試寫了一個方法來處理不同顏色控制項的區分。分享程式碼供大家參考。
//根據顏色判斷狀態 public boolean isBlue(UiObject uiObject) throws UiObjectNotFoundException { screenShot("test");//截圖 String path = "/mnt/sdcard/123/test.png"; Bitmap bitmap = BitmapFactory.decodeFile(path);//新建並實例化bitmap對象 Rect rect = uiObject.getVisibleBounds(); int x = rect.left; int xx = rect.right; int y = rect.top; int yy = rect.bottom; List<Integer> blueColor = new ArrayList<Integer>(); for (int i = x; i < xx; i++) { for (int k = y;k < yy;k++) { int color = bitmap.getPixel(i, k);//獲取坐標點像素顏色 int red = Color.blue(color); blueColor.add(red); } } int sum = 0; for (int i = 0;i<blueColor.size();i++) { sum += blueColor.get(i); } // output(sum/blueColor.size()); return sum/blueColor.size() > 200?true:false; }
下面是在選擇判定值的過程中快速獲取某點顏色值的方法:
public int getRedPixel(int x, int y) { screenShot("test");//截圖 String path = "/mnt/sdcard/123/test.png"; Bitmap bitmap = BitmapFactory.decodeFile(path);//新建並實例化bitmap對象 int color = bitmap.getPixel(x, y);//獲取坐標點像素顏色 // output(color);//輸出顏色值 int red = Color.red(color); return red; } public int getGreenPixel(int x, int y) { screenShot("test");//截圖 String path = "/mnt/sdcard/123/test.png"; Bitmap bitmap = BitmapFactory.decodeFile(path);//新建並實例化bitmap對象 int color = bitmap.getPixel(x, y);//獲取坐標點像素顏色 // output(color);//輸出顏色值 int green = Color.green(color); return green; } public int getBluePixel(int x, int y) { screenShot("test");//截圖 String path = "/mnt/sdcard/123/test.png"; Bitmap bitmap = BitmapFactory.decodeFile(path);//新建並實例化bitmap對象 int color = bitmap.getPixel(x, y);//獲取坐標點像素顏色 // output(color);//輸出顏色值 int blue = Color.blue(color); return blue; }
public int[] getRGBcolorPixel(int x, int y) { screenShot("testDemo"); String path = "/mnt/sdcard/123/testDemo.png"; Bitmap bitmap = BitmapFactory.decodeFile(path); int color = bitmap.getPixel(x, y); int red = Color.red(color); int green = Color.green(color); int blue = Color.blue(color); int[] rgb = {red, green, blue}; return rgb; }
技術類文章精選
- java一行程式碼列印心形
- Linux性能監控軟體netdata中文漢化版
- 介面測試程式碼覆蓋率(jacoco)方案分享
- 性能測試框架
- 如何在Linux命令行介面愉快進行性能測試
- 圖解HTTP腦圖
- 如何測試概率型業務介面
- httpclient處理多用戶同時在線
- 將swagger文檔自動變成測試程式碼
- 五行程式碼構建靜態部落格
- httpclient如何處理302重定向
- 基於java的直線型介面測試框架初探
- Tcloud 雲測平台–集大成者
非技術文章精選
- 為什麼選擇軟體測試作為職業道路?
- 成為傑出Java開發人員的10個步驟
- 寫給所有人的編程思維
- 自動化測試的障礙
- 自動化測試的問題所在
- 測試之《程式碼不朽》腦圖
- 成為優秀自動化測試工程師的7個步驟