UiAutomator2.0中實(shí)現(xiàn)黏貼板操作

今天繼續(xù)分享幾個(gè)UiAutomator2.0中的小技巧,在移動(dòng)端自動(dòng)化測試中,有時(shí)候需要用到從黏貼板上獲取內(nèi)容,比如在界面上點(diǎn)了或觸發(fā)了復(fù)制操作,后續(xù)想把復(fù)制的內(nèi)容黏貼出來該如何操作?一般有2種方式:

  1. 第一種適合輸入框、文本框等輸入型控件,可以直接模擬鍵盤輸入Ctrl+V,這樣就把內(nèi)容黏貼到對(duì)應(yīng)控件了;
  2. 第二種我要獲取的內(nèi)容并不需要輸入到某個(gè)控件,僅僅是就想獲得之前復(fù)制的內(nèi)容,這時(shí)候就適合操作黏貼板來獲得復(fù)制的內(nèi)容了。

代碼很簡單,如下:

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) {
                    // 從數(shù)據(jù)集中獲取(粘貼)第一條文本數(shù)據(jù)
                    CharSequence text = clipData.getItemAt(0).getText();
                    data.append(text.toString());
                }
            }
        }, 500);
        sleep(800);//Thread.sleep(800)的異常封裝而已
        return data.toString();
    }

需要特別說明的是:

  1. 在創(chuàng)建ClipboardManager 對(duì)象時(shí)需要傳入一個(gè)Context對(duì)象,這個(gè)context不能用測試的context,而必須用測試應(yīng)用的context,下面給出對(duì)應(yīng)的定義差異:
Context mContext = InstrumentationRegistry.getContext(); //當(dāng)前測試的Context
Context mAppContext = InstrumentationRegistry.getTargetContext(); //當(dāng)前測試應(yīng)用的Context
  1. 上面操作黏貼板的代碼不能直接放在主線程,不然會(huì)拋出下面的異常,所以需要自己去開個(gè)線程,將操作黏貼板的代碼放在新開的線程中即可。


對(duì)于黏貼板的復(fù)制操作,上面的都搞定了,那就灰常簡單了,至于要不要放到子線程里面,還木有嘗試過,有需要的童鞋可以嘗試一下。

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

原文來自下方公眾號(hào),轉(zhuǎn)載請聯(lián)系作者,并務(wù)必保留出處。
想第一時(shí)間看到更多原創(chuàng)技術(shù)好文和資料,請關(guān)注公眾號(hào):測試開發(fā)棧

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程,因...
    小菜c閱讀 7,358評(píng)論 0 17
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,674評(píng)論 1 32
  • “哼!到底是韋婆婆狠心,她肯定巴不得瞎眼老漢趕緊死了呢?!鼻圩雍藓薜卣f,她因?yàn)榇蚧ń窐涞氖乱鸬膬?nèi)疚瞬間消失了。 ...
    筱昀閱讀 332評(píng)論 0 2
  • 我相信看到這個(gè)標(biāo)題,很多人都有共鳴感。哪怕活到而立之年,許多人仍然是過著“行尸走肉”的生活,只是機(jī)械化的上班下班,...
    字療師閱讀 886評(píng)論 0 1
  • 001經(jīng)歷了一場面試 今天去新的公司面試,面試官隨和,沒架子。出了三道題 速算題24乘26 97乘98 問答題 窨...
    此去經(jīng)年的阿圓閱讀 211評(píng)論 0 0

友情鏈接更多精彩內(nèi)容