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;      }  

技術類文章精選

  1. java一行程式碼列印心形
  2. Linux性能監控軟體netdata中文漢化版
  3. 介面測試程式碼覆蓋率(jacoco)方案分享
  4. 性能測試框架
  5. 如何在Linux命令行介面愉快進行性能測試
  6. 圖解HTTP腦圖
  7. 如何測試概率型業務介面
  8. httpclient處理多用戶同時在線
  9. 將swagger文檔自動變成測試程式碼
  10. 五行程式碼構建靜態部落格
  11. httpclient如何處理302重定向
  12. 基於java的直線型介面測試框架初探
  13. Tcloud 雲測平台--集大成者

非技術文章精選

  1. 為什麼選擇軟體測試作為職業道路?
  2. 成為傑出Java開發人員的10個步驟
  3. 寫給所有人的編程思維
  4. 自動化測試的障礙
  5. 自動化測試的問題所在
  6. 測試之《程式碼不朽》腦圖
  7. 成為優秀自動化測試工程師的7個步驟

Tags: