Android自动化测试

记录 2018-08-08 该东西只是记录,方便你我他

导包:

 compile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'

UiDevice 此类介绍:

打开某个APP

 UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
        try {
            UiObject x = mDevice.findObject(new UiSelector().text("中国农业银行"));
            x.click();
        } catch (UiObjectNotFoundException e) {
            e.printStackTrace();
        }

//UiDevice 方法大致介绍
mDevice.pressBack();//模拟手机回退键
mDevice.pressHome();//模拟手机Home键
mDevice.pressMenu();//模拟手机菜单键
mDevice.pressRecentApps();//模拟手机任务栏
...        //刻根据业务需求来加自己业务上的东西

工具介绍

uiautomatorviewer.bat

在其目录为:

D:\Android\SDK\tools\bin

页面为这个样子的:

image.png
  UiObject uiObject = new UiObject(new UiSelector().resourceId("com.android.systemui:id/recent_app_clear"));
                    if (uiObject.exists()) {
                        uiObject.click();
                    }
image.png
// 在该页面查找ID为:com.android.systemui:id/task_view_thumbnail 的控件
    UiObject uiObject = new UiObject(new UiSelector().resourceId("com.android.systemui:id/recent_app_clear"));
      //该控件是否存在
      if (uiObject.exists()) {
      //模拟点击该控件
        uiObject.click();
         }

如果控件没有ID该咋办?那就取它的【内容】和【类】

image.png

在TEXT里边这样写

  UiObject weixin= new UiObject(new UiSelector().text("微信").className("android.widget.TextView"));
              //判断是否存在
                if (weixin.exists()) {
                  //模拟点击
                    weixin.click();
                    break;
                }

如果我想在文本框输入东西该咋办,我这里用的是ID,没有ID用类名 + 内容

image.png
  UiObject duanxin= new UiObject(new UiSelector().resourceId("com.zui.mms:id/recipient_text_view"));
              //判断是否存在
                if (duanxin.exists()) {
                  //模拟点击
                    duanxin.setText("你要输入的Text");
                    break;
                }

如果我又没有 [ID] 也没有【内容】 该咋查找

第一种方法

image.png

步骤1.我们先找到上层树有ID得控件

image.png

步骤2.找到子类控件开始写代码

image.png

我们找到第一个子类控件为:android.widget.LinearLayout Index为:1

image.png

image.png

我们找到第二个子类控件为:android.widget.LinearLayout Index为:1

image.png

image.png

我们找到第三个子类控件为:android.widget.LinearLayout Index为:0

image.png

image.png

我们找到第四个子类控件为:android.widget.TextView Index为:0

image.png

image.png

找到了!

代码是这样的

image.png

image.png
  UiObject uiObject = new UiObject(new UiSelector().resourceId("com.zui.filemanager:id/fileListView"));
        UiObject child = uiObject.getChild(new UiSelector().className("android.widget.LinearLayout").resourceId("com.zui.filemanager:id/background").index(1));
        UiObject child1 = uiObject.getChild(new UiSelector().className("android.widget.LinearLayout").index(1));
        UiObject child2 = child1.getChild(new UiSelector().className("android.widget.LinearLayout").index(0));
        UiObject child3 = child2.getChild(new UiSelector().className("android.widget.TextView").index(0).resourceId("com.zui.filemanager:id/file_name"));

        if (child3.exists()) {
            child3.click();
        }

第二种

12.3

正确的数为层叠数,明白吧?就是树状往下数,别一股脑往下数

代码为:

     UiObject view1 = new UiObject(new UiSelector().className("android.view.View").instance(24));//数字表示你数的位置
      UiObject view2 = new UiObject(new UiSelector().className("android.view.View").instance(25));//数字表示你数的位置

如果不会数,或者嫌麻烦又或者说太辣眼睛,就直接for循环

for循环中的100你自己摸索一下看看页面元素多不多,估算一下,也可能会有200多个

for(int i = 0;i<100;i++){

   String test = "";
            UiObject view1 = new UiObject(new UiSelector().className("android.view.View").instance(24));
            UiObject view2 = new UiObject(new UiSelector().className("android.view.View").instance(25));

            try {
                test = view1.getText();
                if(test == null || test.isEmpty()){
                    test = view1.getContentDescription();
                }
            }catch(Exception e){
                test = view1.getContentDescription();
            }

            Log.e("输出", "auditOrder: " + "该元素名称为:" + test + "该元素位置为:" + i );
}

既没有className也没有index咋办?

直接模拟点击屏幕

image.png

也可以在开发者模式中,选择显示触摸位置

UiDevice.getInstance().click(x,y)

读不到页面怎么办,报错为:

image.png

Error taking device screenshot: EOF

Error taking device screenshot: EOF

这个只能用adb命令来完成了,这样能获取到,只不过有点麻烦

执行该命令获取页面元素为xml,那个工具就是uiautomatorviewer获取的也是xml

这个是没办法中的办法,所以就没有那么优越的窗口供我们使用了,只能用txt文本在里边找

//执行该命令获取页面元素为xml
adb shell /system/bin/uiautomator dump /data/local/tmp/liukangUi.xml
//返回该提示代表成功:dump: creates an XML dump of current UI hierarchy 
//推送到电脑
adb pull /data/local/tmp/liukangUi.xml D:\Xml

返回该提示代表成功:dump: creates an XML dump of current UI hierarchy

创作不易,请作者喝杯咖啡吧~~~~·

作者:XINHAO_HAN

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,039评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,426评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,417评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,868评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,892评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,692评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,416评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,326评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,782评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,957评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,102评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,790评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,442评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,996评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,113评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,332评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,044评论 2 355

推荐阅读更多精彩内容