2023年6月28日发(作者:)
UiAutomator2.0中实现黏贴板操作今天继续分享⼏个UiAutomator2.0中的⼩技巧,在移动端⾃动化测试中,有时候需要⽤到从黏贴板上获取内容,⽐如在界⾯上点了或触发了复制操作,后续想把复制的内容黏贴出来该如何操作?⼀般有2种⽅式:1. 第⼀种适合输⼊框、⽂本框等输⼊型控件,可以直接模拟键盘输⼊Ctrl+V,这样就把内容黏贴到对应控件了;2. 第⼆种我要获取的内容并不需要输⼊到某个控件,仅仅是就想获得之前复制的内容,这时候就适合操作黏贴板来获得复制的内容了。代码很简单,如下:public static String getClipboardContent(){ Handler handler = new Handler(nLooper()); final StringBuffer data = new StringBuffer(); layed(new Runnable() { @Override public void run() { ClipboardManager myClipboard = (ClipboardManager)temService(ARD_SERVICE); ClipData clipData = maryClip(); if (clipData != null && mCount() > 0) { // 从数据集中获取(粘贴)第⼀条⽂本数据 CharSequence text = mAt(0).getText(); (ng()); } } }, 500); sleep(800);//(800)的异常封装⽽已 return ng(); }需要特别说明的是:1. 在创建ClipboardManager 对象时需要传⼊⼀个Context对象,这个context不能⽤测试的context,⽽必须⽤测试应⽤的context,下⾯给出对应的定义差异:Context mContext = text(); //当前测试的ContextContext mAppContext = getContext(); //当前测试应⽤的Context2. 上⾯操作黏贴板的代码不能直接放在主线程,不然会抛出下⾯的异常,所以需要⾃⼰去开个线程,将操作黏贴板的代码放在新开的线程中即可。对于黏贴板的复制操作,上⾯的都搞定了,那就灰常简单了,⾄于要不要放到⼦线程⾥⾯,还⽊有尝试过,有需要的童鞋可以尝试⼀下。ClipboardManager myClipboard = (ClipboardManager)temService(ARD_SERVICE);ClipData myClip = inText("text", "your copy content");maryClip(myClip);原⽂来⾃下⽅公众号,转载请联系作者,并务必保留出处。想第⼀时间看到更多原创技术好⽂和资料,请关注公众号:测试开发栈
发布者:admin,转转请注明出处:http://www.yc00.com/web/1687931468a58321.html
评论列表(0条)