• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Robotium跨應用處理方法

    發表于:2013-05-07來源:Robotium作者:Zered點擊數: 標簽:Robotium
    相信用過一段時間Robotium的同學一般都遇到過如下情況:界面跳轉到被測程序外以后,Robotium就毫無對策了,這也是Instrumentation框架最致命的一個缺點;然而領導是不會管你這些很“充分”的理由的…..

      相信用過一段時間Robotium的同學一般都遇到過如下情況:界面跳轉到被測程序外以后,Robotium就毫無對策了,這也是Instrumentation框架最致命的一個缺點;然而領導是不會管你這些很“充分”的理由的…..

      Ok,既然我們有這樣的需求,還是想辦法解決吧。調研了幾天最終還是實現了一個曲線救國的方法:

      實現原理:編寫一個程序A,用于接收CASE中發送的指定廣播,當程序A接收到指定的廣播后就會響應你注入的動作事件。

      準備工作:

      熟悉Service 、BoradCastReceiver、input keyevent, 有不清楚的同學可以先百度下以上知識模塊。

      具體實現:

      1、首先為了方便我們使用,我們可以設置為程序A為開機啟動一個Service,該Service中注冊一個BoardCastReceiver用于接收一個特定action的廣播,設置一個IntentFilter:IntentFilter mIntentFilter=new IntentFilter(); mIntentFilter.addAction(“android.zered.action”);然后在BoardCastReceiver的OnReceive方法中使用Runtime.getRuntime.exec(cmdB)執行我們Case中發送過來的指令(input keyevent xx 當然也可以是其他的一些shell命令)。注意:關于設置程序開機啟動,3.1以后Android系統對廣播接收做了安全處理——未啟動過的程序是不能接收廣播的,當然我們還是有方法解決:即把該程序設置為系統級應用即可,然后把該程序push到system/app下重啟手機;

      2、步驟1的完成已經為我們完成了一個命令執行端(可以理解為CS的server端),現在我們需要做的就是發送這個廣播,發送廣播的方法為context.sendbroadcast,所以我們在Case中就可以使用solo.getCurrentActivity.sendbroadcast發送廣播;

      剩下的就是我們要把這個命令行cmdB封裝到廣播中,Intent intent=new Intent();intent.setAction(“android.zered.action”);intent.putExtra(TAG,cmdB);solo.getCurrentActivity.sendbroadcast(intent);

      Ok,這樣以來一個帶有命令行的廣播就算是發送出去了。

      3、以上步驟完成以后,步驟1啟動的程序A中的Service接收到步驟2發送的廣播以后,就會執行我們發送的命令行指令cmdB了:Runtime.getRuntime.exec(intent.getStringExtra(TAG))

      以上就是Robotium跨應用的一種處理方法,歡迎大家拍磚。

    原文轉自:http://www.robotium.cn/archives/314

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>