UiAutomator2.0中实现黏贴板操作

今天继续分享几个UiAutomator2.0中的小技巧,在移动端自动化测试中,有时候需要用到从黏贴板上获取内容,比如在界面上点了或触发了复制操作,后续想把复制的内容黏贴出来该如何操作?一般有2种方式:

  1. 第一种适合输入框、文本框等输入型控件,可以直接模拟键盘输入Ctrl+V,这样就把内容黏贴到对应控件了;
  2. 第二种我要获取的内容并不需要输入到某个控件,仅仅是就想获得之前复制的内容,这时候就适合操作黏贴板来获得复制的内容了。

代码很简单,如下:

public static String getClipboardContent(){
        Handler handler = new Handler(Looper.getMainLooper());
        final StringBuffer data = new StringBuffer();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                ClipboardManager myClipboard = (ClipboardManager)mAppContext.getSystemService(Context.CLIPBOARD_SERVICE);
                ClipData clipData = myClipboard.getPrimaryClip();
                if (clipData != null && clipData.getItemCount() > 0) {
                    // 从数据集中获取(粘贴)第一条文本数据
                    CharSequence text = clipData.getItemAt(0).getText();
                    data.append(text.toString());
                }
            }
        }, 500);
        sleep(800);//Thread.sleep(800)的异常封装而已
        return data.toString();
    }

需要特别说明的是:

  1. 在创建ClipboardManager 对象时需要传入一个Context对象,这个context不能用测试的context,而必须用测试应用的context,下面给出对应的定义差异:
Context mContext = InstrumentationRegistry.getContext(); //当前测试的Context
Context mAppContext = InstrumentationRegistry.getTargetContext(); //当前测试应用的Context
  1. 上面操作黏贴板的代码不能直接放在主线程,不然会抛出下面的异常,所以需要自己去开个线程,将操作黏贴板的代码放在新开的线程中即可。


对于黏贴板的复制操作,上面的都搞定了,那就灰常简单了,至于要不要放到子线程里面,还木有尝试过,有需要的童鞋可以尝试一下。

ClipboardManager myClipboard = (ClipboardManager)mAppContext.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData myClip = ClipData.newPlainText("text", "your copy content");
myClipboard.setPrimaryClip(myClip);

原文来自下方公众号,转载请联系作者,并务必保留出处。
想第一时间看到更多原创技术好文和资料,请关注公众号:测试开发栈

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,712评论 0 17
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,794评论 1 32
  • “哼!到底是韦婆婆狠心,她肯定巴不得瞎眼老汉赶紧死了呢。”芹子恨恨地说,她因为打花椒树的事引起的内疚瞬间消失了。 ...
    筱昀阅读 2,118评论 0 2
  • 我相信看到这个标题,很多人都有共鸣感。哪怕活到而立之年,许多人仍然是过着“行尸走肉”的生活,只是机械化的上班下班,...
    字疗师阅读 4,059评论 0 1
  • 001经历了一场面试 今天去新的公司面试,面试官随和,没架子。出了三道题 速算题24乘26 97乘98 问答题 窨...
    此去经年的阿圆阅读 1,293评论 0 0