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