专栏首页FunTesterandroid UiAutomator如何根据颜色判断控件的状态

android UiAutomator如何根据颜色判断控件的状态

本人在用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个步骤

本文分享自微信公众号 - FunTester(NuclearTester),作者:八音弦

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 传参传的到底是什么?

    本人在封装一些基本方法的时候遇到过一个问题,我把对象当做参数传到方法里,然后在方法中对这个对象进行了一些修改,但是等我再去输出对象的值和属性时,却发现这些数据并...

    FunTester
  • python使用filter方法递归筛选法求N以内的质数

    本人在学习使用Python的lambda语法的过程中,用之前求解质数的思路重写了一遍。

    FunTester
  • python使用filter方法递归筛选法求N以内的质数(素数)--附一行打印心形标记的代码解析

    本人在学习使用Python的lambda语法的过程中,用之前求解质数的思路重写了一遍。

    FunTester
  • agc007B - Construct Sequences(构造)

    attack
  • P1018 乘积最大

    题目描述 今年是国际数学联盟确定的“2000――世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智...

    attack
  • BZOJ3498: PA2009 Cakes(三元环)

    如果\(v\)的度数\(\leqslant M\),那么就再暴力枚举\(v\)连出去的点\(t\),看\(u\)与\(t\)是否联通(打标记)

    attack
  • 挑战程序竞赛系列(8):2.1一往直前!贪心法(其他)

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    用户1147447
  • C语言——小学题目B卷解析(终)

    第6题,简单说明:系统有默认的转化规则,就是从精度底的转化为精度高的,避免计算时精度的丢失。coding一下:

    Ed_Frey
  • 洛谷P3245 [HNOI2016]大数(莫队)

    两个位置\(l, r\)满足条件当且仅当\(S_l - S_r = 0\),也就是\(S_l = S_r\)

    attack
  • 【BZOJ 1701】Cow School(斜率优化/动态凸包/分治优化)

    小牛参加了n个测试,第i个测试满分是??pi,它的得分是??ti。老师去掉??/??ti/pi最小的d个测试,将剩下的总得分/总满分作为小牛的得分。小牛想知道多...

    饶文津

扫码关注云+社区

领取腾讯云代金券