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個步驟