美文网首页测试开发栈软件测试
UiAutomator2.0中实现黏贴板操作

UiAutomator2.0中实现黏贴板操作

作者: 测试开发栈 | 来源:发表于2019-10-22 17:21 被阅读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);
    

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

    相关文章

      网友评论

        本文标题:UiAutomator2.0中实现黏贴板操作

        本文链接:https://www.haomeiwen.com/subject/ejwwvftx.html